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