class ActiveRecord::Associations::BelongsToAssociation

def replace_keys(record, force: false)

def replace_keys(record, force: false)
  reflection_fk = reflection.foreign_key
  if reflection_fk.is_a?(Array)
    target_key_values = record ? Array(primary_key(record.class)).map { |key| record._read_attribute(key) } : []
    if force || reflection_fk.map { |fk| owner._read_attribute(fk) } != target_key_values
      reflection_fk.each_with_index do |key, index|
        owner[key] = target_key_values[index]
      end
    end
  else
    target_key_value = record ? record._read_attribute(primary_key(record.class)) : nil
    if force || owner._read_attribute(reflection_fk) != target_key_value
      owner[reflection_fk] = target_key_value
    end
  end
end