Module: ActiveRecord::AutosaveAssociation

Defined in:
lib/rails_patch.rb

Instance Method Summary collapse

Instance Method Details

#save_belongs_to_association(reflection) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rails_patch.rb', line 3

def save_belongs_to_association(reflection)
  association = association_instance_get(reflection.name)
  record      = association && association.load_target
  return if record.is_a? Array
  if record && !record.destroyed?
    autosave = reflection.options[:autosave]

    if autosave && record.marked_for_destruction?
      record.destroy
    elsif autosave != false
      saved = record.save(:validate => !autosave) if record.new_record? || (autosave && record.changed_for_autosave?)

      if association.updated?
        association_id = record.send(reflection.options[:primary_key] || :id)
        self[reflection.foreign_key] = association_id
        association.loaded!
      end

      saved if autosave
    end
  end
end