Sha256: cd0c360f8db3b365f6bf6fd2f47d8a8ab275c0b6a8e3a0eb2201ba86e897a334

Contents?: true

Size: 1.09 KB

Versions: 14

Compression:

Stored size: 1.09 KB

Contents

module ActiveRecord
  module AutosaveAssociation
    private

    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?
          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?
            # CPK
            # association_id = record.send(reflection.options[:primary_key] || :id)
            association_id = reflection.options[:primary_key] ? record[reflection.options[:primary_key]] : record.id
            self[reflection.foreign_key] = association_id
            association.loaded!
          end

          saved if autosave
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
composite_primary_keys-11.0.3 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.2 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-10.0.5 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-9.0.10 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.1 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.0 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-10.0.4 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-10.0.3 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.0.rc1 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.0.beta4 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.0.beta3 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.0.beta2 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-11.0.0.beta1 lib/composite_primary_keys/autosave_association.rb
composite_primary_keys-10.0.2 lib/composite_primary_keys/autosave_association.rb