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
|
| 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