2011-10-04 64 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配合使用)