2012-07-25 120 views
2

一旦其所有者(即其所有记录)被销毁,我想销毁Book销毁所有belongs_to协会销毁的记录

如果只有一个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不会被销毁。

回答

0

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

我还是检查上:dependent => :destroy它...

研究发现,“当belongs_to的结合使用具有的has_many关系上的另一个类,因为离开孤立的记录之势,此选项不应该被指定背后。”这不完全相同,但似乎暗示它将是一个手动过程,即删除dependent => :destroy两个语句并且手动删除子节点/父节点programmaticaly(手动)。