class MR::Model::Field
Attributes
changed_method_name[R]
name[R]
reader_method_name[R]
was_method_name[R]
writer_method_name[R]
Public Class Methods
new(name)
click to toggle source
# File lib/mr/model/fields.rb, line 117 def initialize(name) @name = name.to_s @reader_method_name = @name @was_method_name = "#{@name}_was" @changed_method_name = "#{@name}_changed?" @writer_method_name = "#{@reader_method_name}=" @attribute_reader_method_name = @reader_method_name @attribute_writer_method_name = @writer_method_name @attribute_was_method_name = "#{@reader_method_name}_was" @attribute_changed_method_name = "#{@reader_method_name}_changed?" end
Public Instance Methods
changed?(record)
click to toggle source
# File lib/mr/model/fields.rb, line 141 def changed?(record) record.send(@attribute_changed_method_name) end
define_reader_on(model_class)
click to toggle source
# File lib/mr/model/fields.rb, line 145 def define_reader_on(model_class) field = self model_class.class_eval do define_method(field.reader_method_name) do field.read(record) end define_method(field.changed_method_name) do field.changed?(record) end define_method(field.was_method_name) do field.was(record) end end end
define_writer_on(model_class)
click to toggle source
# File lib/mr/model/fields.rb, line 162 def define_writer_on(model_class) field = self model_class.class_eval do define_method(field.writer_method_name) do |value| field.write(value, record) end end end
read(record)
click to toggle source
# File lib/mr/model/fields.rb, line 129 def read(record) record.send(@attribute_reader_method_name) end
was(record)
click to toggle source
# File lib/mr/model/fields.rb, line 137 def was(record) record.send(@attribute_was_method_name) end
write(value, record)
click to toggle source
# File lib/mr/model/fields.rb, line 133 def write(value, record) record.send(@attribute_writer_method_name, value) end