0

私は次のカテゴリモデルを持っています:

class Category
    include Mongoid::Document
    include Mongoid::Tree

    field :title, type: String
    validates :title, presence: true, uniqueness: true, length: {minimum: 2}
end

次のテストデータを保存しました。

Root 1
    Leaf 1
        Subleaf 1
    Leaf 2
Root 2
    Leaf 3

今、Category.allを呼び出すと、次のように返されます。

Root 1
Leaf 2
Leaf 1
Root 2
Subleaf 1
Leaf 3

しかし、私は次の注文が必要です:

Root 1
Leaf 1
Subleaf 1
Leaf 2
Root 2
Leaf 3
4

1 に答える 1

1

Mongoid::Treeデフォルトではツリーを並べ替えません。代わりに、注文用のモジュールが含まれています。クラスに含めるだけです。

class Category
  include Mongoid::Document
  include Mongoid::Tree
  include Mongoid::Tree::Ordering

  field :title, type: String
  validates :title, presence: true, uniqueness: true, length: {minimum: 2}
end

それはすでにあなたの問題を解決するはずです。そうでない場合は、にMongoid::Tree::Traversal付属しているモジュールを確認してくださいMongoid::Tree。これCategory#traverseにより、呼吸優先または深さ優先(これが必要だと思います)のトラバーサルを選択できる方法が提供されます。

Ordering and Traversalの詳細については、 http ://benediktdeicke.com/mongoid-tree/#Orderingおよびhttp://benediktdeicke.com/mongoid-tree/#Traversalを参照してください。

于 2012-10-16T06:52:29.863 に答える