Sha256: b46f9bff68da6030d0a0c2509ed19b9d4632ca71fb0c8aace2472c62ab410ec9
Contents?: true
Size: 1.21 KB
Versions: 3
Compression:
Stored size: 1.21 KB
Contents
module ActiveRecord module AutosaveAssociation private # Saves the associated record if it's new or <tt>:autosave</tt> is enabled. # # In addition, it will destroy the association if it was marked for destruction. def save_belongs_to_association(reflection) association = association_instance_get(reflection.name) record = association && association.load_target if record && !record.destroyed? autosave = reflection.options[:autosave] if autosave && record.marked_for_destruction? self[reflection.foreign_key] = nil record.destroy elsif autosave != false saved = record.save(:validate => !autosave) if record.new_record? || (autosave && record.changed_for_autosave?) if association.updated? # it will fail to use "#record.send(reflection.options[:primary_key] || :id)" for CPK association_id = record.read_attribute(reflection.options[:primary_key] || :id) self[reflection.foreign_key] = association_id association.loaded! end saved if autosave end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems