2012-07-25 57 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(手動)。