accepts_nested_attributes_for (ActiveRecord::NestedAttributes::ClassMethods)

    # File lib/active_record/nested_attributes.rb, line 189
          def accepts_nested_attributes_for(*attr_names)
            options = { :allow_destroy => false }
            options.update(attr_names.extract_options!)
            options.assert_valid_keys(:allow_destroy, :reject_if)

            attr_names.each do |association_name|
              if reflection = reflect_on_association(association_name)
                type = case reflection.macro
                when :has_one, :belongs_to
                  :one_to_one
                when :has_many, :has_and_belongs_to_many
                  :collection
                end

                reflection.options[:autosave] = true
                self.reject_new_nested_attributes_procs[association_name.to_sym] = options[:reject_if]

                # def pirate_attributes=(attributes)
                #   assign_nested_attributes_for_one_to_one_association(:pirate, attributes, false)
                # end
                class_eval %{
                  def #{association_name}_attributes=(attributes)
                    assign_nested_attributes_for_#{type}_association(:#{association_name}, attributes, #{options[:allow_destroy]})
                  end
                }, __FILE__, __LINE__
              else
                raise ArgumentError, "No association found for name `#{association_name}'. Has it been defined yet?"
              end
            end
          end