Module: Zm::Model::AttributeChangeObserver::ClassMethods

Defined in:
lib/zm/modules/zm_model.rb

Instance Method Summary collapse

Instance Method Details

#define_changed_attribute(attr_name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/zm/modules/zm_model.rb', line 13

def define_changed_attribute(attr_name)
  attr_reader attr_name

  generated_attribute_methods.module_eval "    def \#{attr_name}_changed\n      @\#{attr_name}_changed ||= false\n    end\n    \n    def \#{attr_name}_changed?\n      \#{attr_name}_changed\n    end\n    \n    def \#{attr_name}=(value)\n      return @\#{attr_name} if value == @\#{attr_name}\n      @\#{attr_name}_changed = true\n      @\#{attr_name} = value\n    end\n  RUBY\nend\n", __FILE__, __LINE__ + 1

#define_changed_attributes(*attr_names) ⇒ Object



9
10
11
# File 'lib/zm/modules/zm_model.rb', line 9

def define_changed_attributes(*attr_names)
  attr_names.flatten.each { |attr_name| define_changed_attribute(attr_name) }
end