class MR::Factory::RecordStack::RecordData

Attributes

association_datas[R]
record[R]

Public Class Methods

new(record) click to toggle source
# File lib/mr/factory/record_stack.rb, line 90
def initialize(record)
  @record            = record
  @association_datas = build_association_datas(@record)
end

Public Instance Methods

create_record() click to toggle source
# File lib/mr/factory/record_stack.rb, line 103
def create_record
  if @record.new_record?
    @record.save!
    @record.reset_save_called if @record.kind_of?(MR::FakeRecord)
  end
end
destroy_record() click to toggle source
# File lib/mr/factory/record_stack.rb, line 110
def destroy_record
  @record.destroy unless @record.destroyed?
end
record_class() click to toggle source
# File lib/mr/factory/record_stack.rb, line 95
def record_class
  @record.class
end
refresh_record_associations() click to toggle source

ensures records have their associations foreign type/key attributes set by re-setting the association to its current value

# File lib/mr/factory/record_stack.rb, line 116
def refresh_record_associations
  @association_datas.each do |association_data|
    associated_record = @record.send(association_data.name)
    @record.send("#{association_data.name}=", associated_record)
  end
end
set_association(name, record_data) click to toggle source
# File lib/mr/factory/record_stack.rb, line 99
def set_association(name, record_data)
  @record.send("#{name}=", record_data.record)
end

Private Instance Methods

build_association_datas(record) click to toggle source
# File lib/mr/factory/record_stack.rb, line 125
def build_association_datas(record)
  record.class.reflect_on_all_associations(:belongs_to).map do |reflection|
    AssociationData.new(record.association(reflection.name))
  end.compact.sort
end