Class: MR::Model::OneToManyAssociation

Inherits:
Association show all
Defined in:
lib/mr/model/associations.rb

Instance Attribute Summary

Attributes inherited from Association

#name, #reader_method_name, #writer_method_name

Instance Method Summary collapse

Methods inherited from Association

#define_accessor_on, #initialize

Constructor Details

This class inherits a constructor from MR::Model::Association

Instance Method Details

#read(record) ⇒ Object



134
135
136
137
138
# File 'lib/mr/model/associations.rb', line 134

def read(record)
  (record.send(@association_reader_name) || []).map do |associated_record|
    associated_record.model_class.new(associated_record)
  end
end

#write(values, model, record, &block) ⇒ Object



140
141
142
143
144
145
146
147
# File 'lib/mr/model/associations.rb', line 140

def write(values, model, record, &block)
  associated_records = [*values].compact.map do |value|
    raise BadAssociationValueError.new(value) if !value.kind_of?(MR::Model)
    model.instance_exec(value, &block)
  end
  record.send(@association_writer_name, associated_records)
  values
end