:dependent => :destroy
не уничтожает старую запись Ceo, когда назначается новое значение.Все, что нужно, это уничтожить объект Ceo, , в случае, если объект Company уничтожен .
Если вы просто меняете Ceo, вы можете изменить поля в существующей записи Ceo:
c.ceo.name = "Baldmer"
c.ceo.age = 56
c.ceo.save
# This doesn't create a new record, it simply changes the only already in place
Или следующее, которое одновременно изменяет атрибуты и сохраняет запись в одном кадре.
c.ceo.update_attributes({:name => "Baldmer", :age => 56, :gender => "male"})
Или явно уничтожает старую Ceo запись послесоздается новый:
c = Company.find(1)
jobless = c.create_ceo(:name => "Jobless", :age => 46, :gender => "male")
baldmer = c.create_ceo(:name => "Baldmer", :age => 56, :gender => "male")
jobless.destroy # you need to explicitly destroy this Ceo record.
Если вы останетесь с тем, что у вас есть, и вы заинтересованы в получении списка руководителей, которые находятся в БД, но которыев настоящее время не работает для компаний, вы можете сделать:
> ceos_without_companys = Ceo.find(:all, :conditions => ":company_id = nil")
=> ["<#Ceo, :name => "Jobless", :age => 46, :gender => "male">]