2009-08-23 15 views
4

私はこの問題を解決しようとしています。私はItemモデルを持っていて、各Itemは他のアイテムを持つことも、何も持たないこともできます。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です。 –

0

あり、ほとんどの非奇妙なユースケースを処理するためにいくつかのARの組み込みコマンドまたはLIBSのプラグイン/宝石は、おそらくですが、:明確ではありませんあなたは

  • 結合テーブル/ Actveレコード協会の話をしている場合には、(異種relationsip 、2つのまたは3つのテーブル)
  • つのテーブルのようにオブジェクトのネストされたセット/ acts_as_tree、(ツリー)または
  • 単一テーブル継承、一つのテーブルに多少異質オブジェクト

または、messiestもの、 - エンティティ - 属性値テーブル(EAV)デザイン

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