module ActiveRecord::AutosaveAssociation
def save_collection_association(reflection)
This all happens inside a transaction, _if_ the Transactions module is included into
with mark_for_destruction.
In addition, it destroys all children that were marked for destruction
:autosave is enabled on the association.
Saves any new associated records, or all loaded autosave associations if
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.each do |record| next if record.destroyed? if autosave && record.marked_for_destruction? association.destroy(record) elsif autosave != false && (@new_record_before_save || record.new_record?) if autosave saved = association.send(:insert_record, record, false, false) else association.send(:insert_record, record) end elsif autosave saved = record.save(:validate => false) end raise ActiveRecord::Rollback if saved == false end end # reconstruct the SQL queries now that we know the owner's id association.send(:construct_sql) if association.respond_to?(:construct_sql) end end