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