instance method
save_belongs_to_association
Ruby on Rails 2.3.18
Since v2.3.18 PrivateSignature
save_belongs_to_association(reflection)
Saves the associated record if it’s new or :autosave is enabled on the association.
In addition, it will destroy the association if it was 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.
Parameters
-
reflectionreq
Source
# File activerecord/lib/active_record/autosave_association.rb, line 372
def save_belongs_to_association(reflection)
if (association = association_instance_get(reflection.name)) && !association.destroyed?
autosave = reflection.options[:autosave]
if autosave && association.marked_for_destruction?
association.destroy
elsif autosave != false
saved = association.save(!autosave) if association.new_record? || autosave
if association.updated?
association_id = association.send(reflection.options[:primary_key] || :id)
self[reflection.primary_key_name] = association_id
# TODO: Removing this code doesn't seem to matter…
if reflection.options[:polymorphic]
self[reflection.options[:foreign_type]] = association.class.base_class.name.to_s
end
end
saved if autosave
end
end
end
Defined in activerecord/lib/active_record/autosave_association.rb line 372
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::AutosaveAssociation