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