123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::AssociationLink::DeprecatedIdWriter

Do not use. This class is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, AssociationLink
Instance Chain:
self, AssociationLink
Inherits: AssociationLink
  • ::Object
Defined in: activerecord/lib/active_record/association_route.rb

Overview

Writes through write_attribute by declared name, including its deprecated mapping of "id" to a model's different primary key. Reads and comparisons treat "id" as the attribute itself.

Instance Method Summary

Instance Method Details

#clear_reference(reference_record, preserve: nil, fixed_values: true, force: true)

[ GitHub ]

  
# File 'activerecord/lib/active_record/association_route.rb', line 154

def clear_reference(reference_record, preserve: nil, fixed_values: true, force: true)
  reference_key.zip(_reference_key) do |column, physical_column|
    next if preserve&.include?(physical_column)
    reference_record.write_attribute(column, nil)
  end
  return unless fixed_values

  self.fixed_values.each_key.zip(_fixed_values.each_key) do |column, physical_column|
    next if !force && reference_record._read_attr(physical_column).nil?
    reference_record.write_attribute(column, nil)
  end
end

#write_reference(reference_record, target_record, force: true)

[ GitHub ]

  
# File 'activerecord/lib/active_record/association_route.rb', line 147

def write_reference(reference_record, target_record, force: true)
  each_reference_value(target_record) do |column, value|
    next if !force && reference_record.read_attr(column) == value
    reference_record.write_attribute(column, value)
  end
end