Sha256: af18a3f858eb4cf52aa5fc5e2b1ffca3e857094e01603584647db740de80dcd6
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
module HatTrick module ModelMethods extend ActiveSupport::Concern mattr_accessor :validation_groups mattr_accessor :dynamic_validation_groups attr_accessor :_dummy # so the dummy field will have something to set included do alias_method_chain :perform_validations, :hat_trick if instance_methods.include?(:perform_validations) alias_method_chain :as_json, :model_name if instance_methods.include?(:as_json) end def self.dynamic_validation_groups @dynamic_validation_groups ||= [] end def self.set_current_validation_group_for(klass, validation_group_name, dynamic) self.validation_groups ||= {} validation_groups[klass.to_s.underscore] = validation_group_name dynamic_validation_groups << validation_group_name if dynamic end def self.current_validation_group_for(klass) return nil unless validation_groups validation_groups[klass.to_s.underscore] end def perform_validations_with_hat_trick(*args, &block) enable_current_validation_group perform_validations_without_hat_trick(*args, &block) end def as_json_with_model_name(*args, &block) json = as_json_without_model_name(*args, &block) json.merge! :__name__ => self.class.to_s.underscore if json.respond_to?(:merge!) end private # don't call this method 'current_validation_group', it conflicts with # the validation_group gem def current_step_validation_group HatTrick::ModelMethods.current_validation_group_for(self.class) end def enable_current_validation_group validation_group = current_step_validation_group if validation_group Rails.logger.debug "Enabling validation group #{validation_group}" enable_validation_group validation_group else Rails.logger.debug "NOT enabling a validation group" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hat-trick-0.2.2 | lib/hat_trick/model_methods.rb |