class MR::Factory::WithAssociationsConfig::ObjectBuilder

Public Instance Methods

set(name, value) click to toggle source
Calls superclass method MR::Factory::Config::ObjectBuilder#set
# File lib/mr/factory/config.rb, line 202
def set(name, value)
  if value.kind_of?(Hash) && (association = __mr_ob_get_association(name))
    __mr_ob_set_association_from_hash(association, name, value)
  else
    super(name, value)
  end
rescue ArgumentError, NoRecordClassError => exception
  exception.set_backtrace(caller)
  raise exception
end

Private Instance Methods

__mr_ob_get_association(name) click to toggle source
# File lib/mr/factory/config.rb, line 215
def __mr_ob_get_association(name)
  @__mr_ob_factory_config.ar_association_for(@__mr_ob_object, name)
end
__mr_ob_set_association_from_hash(association, name, value) click to toggle source
# File lib/mr/factory/config.rb, line 219
def __mr_ob_set_association_from_hash(association, name, value)
  factory = begin
    @__mr_ob_factory_config.factory_for(name, association.klass)
  rescue NoRecordClassError
    raise NoRecordClassError.for_association(association)
  end
  associated_object = @__mr_ob_object.send(name) || factory.instance
  self.class.apply_hash(associated_object, factory.config, value)
  __mr_ob_set_attribute(@__mr_ob_object, name, associated_object)
end