2009-08-23 3 views
4

Ich habe ein Problem, das funktioniert zu bekommen. Ich habe ein Gegenstandsmodell, und jeder Gegenstand kann andere Gegenstände oder nichts haben.Rekursives Modell in Rails

Also ist das möglich oder muss ich etwas Magie tun?

Antwort

6

können Sie entweder den acts as tree plugin oder Ihr selbst bauen:

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

eine Alternative zu a_a_tree ist acts_as_nested_set, die für Leseoperationen viel bessere Leistung. –

0

Es gibt wahrscheinlich einige AR builtins oder Libs plugins/Edelsteine ​​die meisten nicht-bizarre Anwendungsfälle zu handhaben, aber: nicht klar, ob Sie eine redest über

  • Tisch/Actve Rekord Verein join, (heterogene relationsip , 2 oder drei Tabellen)
  • nested set/acts_as_tree, (Baum wie Objekte in einer Tabelle) oder
  • Einzeltisch Vererbung, etwas heterogene Objekte in einer Tabelle

oder die messiest Sache, ein - Entity-Attribut-Wert-Tabelle (EAV) Design

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