一旦所有belongs_to关联被销毁,就销毁它

时间:2012-07-25 17:34:07

标签: ruby-on-rails activerecord

一旦它的所有者(即它所属的记录)被销毁,我想要销毁Book

如果只有一个belongs_to关系,则dependent选项很简单。

class Book < ActiveRecord::Base
  belongs_to :shop
end

class Shop < ActiveRecord::Base
  has_many :books, :dependent => :destroy
end

class Cart < ActiveRecord::Base
  has_many :books, :dependent => :destroy
end

但是如果有更多的belongs_to关系?例如:

class Book < ActiveRecord::Base
  belongs_to :shop
  belongs_to :cart
end

我希望在其所有者所有被销毁后销毁Book。如果CartShop拥有相同的Book,并且Shop已被销毁但Cart未被销毁,则Book将会被摧毁。

1 个答案:

答案 0 :(得分:0)

我相信你想要一个多态的belongs_to关联。

我仍然在检查:dependent => :destroy ...

研究发现“当belongs_to与另一个类的has_many关系一起使用时,不应指定此选项,因为可能会留下孤立的记录。”这似乎并不完全相同,但似乎暗示它将是一个手动过程,即删除两个dependent => :destroy语句并删除子程序/父记录(手动)。