class MR::Model::Association

Attributes

name[R]
reader_method_name[R]
writer_method_name[R]

Public Class Methods

new(name) click to toggle source
# File lib/mr/model/associations.rb, line 90
def initialize(name)
  @name = name.to_s
  @reader_method_name = @name
  @writer_method_name = "#{@name}="
  @association_reader_name = @name
  @association_writer_name = "#{@name}="
end

Public Instance Methods

define_accessor_on(model_class) click to toggle source
# File lib/mr/model/associations.rb, line 98
def define_accessor_on(model_class)
  association = self
  model_class.class_eval do

    define_method(association.reader_method_name) do
      association.read(record)
    end

    define_method(association.writer_method_name) do |value|
      begin
        association.write(value, self, record){ |m| m.record }
      rescue BadAssociationValueError => exception
        raise ArgumentError, exception.message, caller
      end
    end

  end
end