method
replace
v3.2.13 -
Show latest stable
- Class:
ActiveRecord::Associations::HasOneAssociation
replace(record, save = true)public
No documentation available.
# File activerecord/lib/active_record/associations/has_one_association.rb, line 7
def replace(record, save = true)
raise_on_type_mismatch(record) if record
load_target
# If target and record are nil, or target is equal to record,
# we don't need to have transaction.
if (target || record) && target != record
transaction_if(save) do
remove_target!(options[:dependent]) if target && !target.destroyed?
if record
set_owner_attributes(record)
set_inverse_instance(record)
if owner.persisted? && save && !record.save
nullify_owner_attributes(record)
set_owner_attributes(target) if target
raise RecordNotSaved, "Failed to save the new associated #{reflection.name}."
end
end
end
end
self.target = record
end