vendor/bundle/gems/activerecord-4.0.0/lib/active_record/autosave_association.rb
# Saves any new associated records, or all loaded autosave associations if
# <tt>:autosave</tt> is enabled on the association.
#
# In addition, it destroys all children that were marked for destruction
# with mark_for_destruction.
#
# This all happens inside a transaction, _if_ the Transactions module is included into
# ActiveRecord::Base after the AutosaveAssociation module, which it does by default.
Saves any new associated records, or all loaded autosave associations if
:autosave is enabled on the association.

In addition, it destroys all children that were marked for destruction
with mark_for_destruction.

This all happens inside a transaction, _if_ the Transactions module is included into
ActiveRecord::Base after the AutosaveAssociation module, which it does by default.
Saves any new associated records or all loaded autosave associations if : autosave is enabled on the association . In addition it destroys all children that were marked for destruction with mark_for_destruction . This all happens inside a transaction _if_ the Transactions module is included into ActiveRecord :: Base after the AutosaveAssociation module which it does by default .
def save_collection_association(reflection)
      if association = association_instance_get(reflection.name)
        autosave = reflection.options[:autosave]
        if records = associated_records_to_validate_or_save(association, @new_record_before_save, autosave)
          records_to_destroy = []
          records.each do |record|
            next if record.destroyed?
            saved = true
            if autosave && record.marked_for_destruction?
              records_to_destroy << record
            elsif autosave != false && (@new_record_before_save || record.new_record?)
              if autosave
                saved = association.insert_record(record, false)
              else
                association.insert_record(record) unless reflection.nested?
              end
            elsif autosave
              saved = record.save(:validate => false)
            end
            raise ActiveRecord::Rollback unless saved
          end
          records_to_destroy.each do |record|
            association.destroy(record)
          end
        end
        association.reset_scope if association.respond_to?(:reset_scope)
      end
    end
def save_collection_association ( reflection ) if association = association_instance_get ( reflection . name ) autosave = reflection . options [ :autosave ] if records = associated_records_to_validate_or_save ( association , @new_record_before_save , autosave ) records_to_destroy = [ ] records . each do | record | next if record . destroyed? saved = true if autosave && record . marked_for_destruction? records_to_destroy << record elsif autosave != false && ( @new_record_before_save || record . new_record? ) if autosave saved = association . insert_record ( record , false ) else association . insert_record ( record ) unless reflection . nested? end elsif autosave saved = record . save ( :validate => false ) end raise ActiveRecord :: Rollback unless saved end records_to_destroy . each do | record | association . destroy ( record ) end end association . reset_scope if association . respond_to? ( :reset_scope ) end end
Saves any new associated records, or all loaded autosave associations if
<tt>:autosave</tt> is enabled on the association.
Saves any new associated records or all loaded autosave associations if <tt > : autosave< / tt > is enabled on the association .
# reconstruct the scope now that we know the owner's id
reflection
<not_specific>