2011-10-04 155 views
0

我有這個數據庫的設計:如何刪除級聯on Rails的2

合同
  • ID
配股
  • ID
  • contract_id
allotments_rooms
  • ID
  • allotment_id
  • ROOM_ID
  • 1合約1個配發
  • 1配發具有N allotments_rooms

所以......

Contract has_one :allotment, :dependent => :delete_all 
Allotment belongs_to :contract 
Allotment has_many :allotments_rooms, :dependent => :delete_all 
Allotments_Rooms belongs_to :allotment 

所以,當我刪除合同中,配股是完全刪除,但allotments_rooms都沒有。

爲什麼?

謝謝!

回答

2

當您使用:dependent => :delete_all時,您銷燬從屬記錄without calling their destroy method,因此他們沒有機會銷燬他們自己的相關記錄。改爲嘗試:dependent => :delete

如果你想在數據庫級別設置FK約束,我還會推薦使用the foreigner gem(雖然我不知道它是否可以與導軌2配合使用)