This project is archived and is in readonly mode.
Resetting primary_key in has one association
Reported by Eugene Hlyzov | April 10th, 2009 @ 10:12 AM | in 2.x
I've defined following association in one of my models
has_one :sequence, :primary_key => :accession, :foreign_key => :accession
When I save the model sequence accession becomes equal to model ID. I think that problems located in AutosaveAssociation#save_has_one_association in following line:
association[reflection.primary_key_name] = id
which is triggered when
association[reflection.primary_key_name] != id
so it doesn't know about :foreign_key params... I fixed it in the following way
def save_has_one_association(reflection)
if (association = association_instance_get(reflection.name)) && !association.target.nil?
if reflection.options[:autosave] && association.marked_for_destruction?
association.destroy
elsif new_record? || association.new_record? || association[reflection.primary_key_name] != self[reflection.options[:foreign_key]] || reflection.options[:autosave]
association[reflection.primary_key_name] = self[reflection.options[:foreign_key]]
association.save(false)
end
end
end
Comments and changes to this ticket
-
CancelProfileIsBroken May 21st, 2009 @ 04:37 PM
- State changed from new to duplicate
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>