diff --git a/lib/forminate.rb b/lib/forminate.rb index 5bdaa1b..2e1cac1 100644 --- a/lib/forminate.rb +++ b/lib/forminate.rb @@ -122,8 +122,9 @@ def build_associations(attributes) association_names.each do |association_name| association_builder = AssociationBuilder.new(association_name, attributes) association = association_builder.build + keys_for_cleanup = association_builder.attribute_keys_for_cleanup.dup attributes.delete_if do |key, _| - association_builder.attribute_keys_for_cleanup.include?(key.to_sym) + keys_for_cleanup.include?(key.to_sym) end instance_variable_set("@#{association_name}".to_sym, association) end diff --git a/lib/forminate/association_builder.rb b/lib/forminate/association_builder.rb index 120a693..98ed942 100644 --- a/lib/forminate/association_builder.rb +++ b/lib/forminate/association_builder.rb @@ -16,6 +16,8 @@ def build end def attribute_keys_for_cleanup + return [] unless nested_attributes.present? + prefixed_attributes.keys.push(name) end @@ -62,7 +64,7 @@ def unprefixed_attributes end def nested_attributes - attrs[name] + attrs[name] if attrs[name].is_a?(Hash) end end end