Module: Trax::Model::Freezable::ClassMethods

Defined in:
lib/trax/model/freezable.rb

Instance Method Summary collapse

Instance Method Details

#define_frozen_validators_for_enum(options) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/trax/model/freezable.rb', line 17

def define_frozen_validators_for_enum(options)
  self.class_eval do
    options.each_pair do |enum_method, frozen_states|
      validates_with ::FrozenValidator, :if => lambda { |record|
        frozen_states.any?{ |state| state == :"#{record.send(enum_method)}" } && !record.changed.include?("#{enum_method}")
      }
    end
  end
end

#freezable_by_enum(options = {}) ⇒ Object



12
13
14
15
# File 'lib/trax/model/freezable.rb', line 12

def freezable_by_enum(options = {})
  freezable_fields.merge!(options)
  define_frozen_validators_for_enum(options)
end