2009-08-23 125 views
4

我試圖讓這個工作有麻煩。我有一個項目模型,每個項目可以有其他項目或沒有任何東西。Rails中的遞歸模型

那麼這是可能的還是我需要做一些魔術?

回答

6

您可以使用acts as tree plugin或建立它你自己:

belongs_to    :parent, 
          :foreign_key => "parent_id", 
          :class_name => "Item" 

has_many     :children, 
          :foreign_key => 'parent_id', 
          :class_name => 'Item', 
          :order => 'created_at ASC', 
          :dependent => :delete_all 
+5

替代a_a_tree是acts_as_nested_set這對於讀操作更好的性能。 – 2009-08-24 01:04:30

0

有可能是一些AR建宏或庫插件/寶石來處理最不離奇的使用情況,但:尚不清楚,如果你在談論一個

  • 連接表/ Actve紀錄協會,(異構relationsip ,2或3臺)
  • 組嵌套/ acts_as_tree,在一個表中(類似對象的樹)或
  • 單個表繼承,在一個表中有些異構對象

或者,最凌亂的東西, - 實體 - 屬性 - 值表(EAV)設計

http://en.wikipedia.org/wiki/Entity-Attribute-Value_model