From 5bd96de6253bf45993a80ebc235b64f72b04d902 Mon Sep 17 00:00:00 2001 From: Carlos Antonio da Silva Date: Wed, 27 Jun 2012 23:06:35 -0300 Subject: Extract nested parameter assignment to a separate method --- activerecord/lib/active_record/attribute_assignment.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/activerecord/lib/active_record/attribute_assignment.rb b/activerecord/lib/active_record/attribute_assignment.rb index a54c103476..bdd198791b 100644 --- a/activerecord/lib/active_record/attribute_assignment.rb +++ b/activerecord/lib/active_record/attribute_assignment.rb @@ -104,8 +104,7 @@ module ActiveRecord end end - # assign any deferred nested attributes after the base attributes have been set - nested_parameter_attributes.each { |k,v| _assign_attribute(k, v) } + assign_nested_parameter_attributes(nested_parameter_attributes) unless nested_parameter_attributes.empty? assign_multiparameter_attributes(multi_parameter_attributes) unless multi_parameter_attributes.empty? ensure @mass_assignment_options = previous_options @@ -133,6 +132,11 @@ module ActiveRecord end end + # Assign any deferred nested attributes after the base attributes have been set. + def assign_nested_parameter_attributes(pairs) + pairs.each { |k, v| _assign_attribute(k, v) } + end + # Instantiates objects for all attribute classes that needs more than one constructor parameter. This is done # by calling new on the column type or aggregation type (through composed_of) object with these parameters. # So having the pairs written_on(1) = "2004", written_on(2) = "6", written_on(3) = "24", will instantiate @@ -252,6 +256,5 @@ module ActiveRecord def find_parameter_position(multiparameter_name) multiparameter_name.scan(/\(([0-9]*).*\)/).first.first.to_i end - end end -- cgit v1.2.3