如何在Rails 2上的级联上删除

时间:2011-10-04 17:09:14

标签: ruby-on-rails activerecord cascade

我有这个数据库设计:

合同
  • 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

因此,当我删除合约时,分配完全被删除,但分配_room不是。

为什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

当您使用:dependent => :delete_all时,会销毁依赖记录without calling their destroy method,因此他们没有机会销毁自己的相关记录。请改为:dependent => :delete

如果你想在数据库级别设置FK约束,我还建议使用the foreigner gem(虽然我不知道它是否适用于rails 2)