instance method
save_belongs_to_association
Ruby on Rails edge
Since v2.3.18 Private — implementation detail, not part of the public APISignature
save_belongs_to_association(reflection)
Saves the associated record if it’s new or :autosave is enabled.
In addition, it will destroy the association if it was marked for destruction.
Parameters
-
reflectionreq
Source
# File activerecord/lib/active_record/autosave_association.rb, line 533
def save_belongs_to_association(reflection)
association = association_instance_get(reflection.name)
return unless association && association.loaded? && !association.stale_target?
record = association.load_target
if record && !record.destroyed?
autosave = reflection.options[:autosave]
if autosave && record.marked_for_destruction?
association.association_route(record).clear_reference(self, fixed_values: false)
record.destroy
elsif autosave != false
saved = if record.new_record? || (autosave && record.changed_for_autosave?)
begin
@autosaving_belongs_to_for ||= {}
@autosaving_belongs_to_for[association] = true
record.save(validate: !autosave)
ensure
@autosaving_belongs_to_for[association] = false
end
end
if association.updated?
association.association_route(record).write(self, record, force: false)
association.loaded!
end
saved if autosave
end
end
end
Defined in activerecord/lib/active_record/autosave_association.rb line 533
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::AutosaveAssociation