我想一個的has_many協會,就像這樣:Ruby on Rails的協會的集理論(工會,差集,交集等)
class Hood
acts_as_tree
has_many :houses, :union_with => :parent
end
class House
end
其中具有護罩1相關的任何房子也會在返回Hood 1的子女組合,以及子女的個人聯合組織。
該協會只需要從胡德的角度來工作。
我寫了一個union_with_parent宏,它給出了期望的效果,但很多不幸的副作用。一個主要問題是has_many :dependent => :destroy
導致無法預料的刪除;因爲我剛剛重新定義了houses
方法,刪除子集也導致刪除了父親胡德中的所有房屋。
類似的問題與設置的差異宏,除了沒有任何一方的房子被摧毀。 (把這個看作是一個面具,那麼一個子項目將包含父項目中的所有房子,除了數據庫中列出的屬於子項目的房子外,:dependent => :destroy
選項會導致所有的父母房屋被銷燬,但是沒有一個因爲我們已經重新定義了房屋我想要的行爲:只有面具的內容被破壞。)
我想過編寫一個has_many_union
宏,但它看起來像所有的關聯都很相關。
我在做這個蠢事嗎?有更容易的方法嗎?或者我應該徹底重新設計? (我真的不喜歡重新設計,因爲傳輸數據並不理想。)
(爲了記錄,是的,我知道這個比喻很糟糕,我的實際設計對大多數人來說都沒有意義,因爲它是生物信息學。)
也許你們都知道一些更好的方法來達到預期的效果?
道歉,你是對的。它應該是一個超級。 =) – 2010-04-08 01:02:56