2012-10-15 4 views
0

주문 나는 다음과 같은 한 종류 모델 : 내가 Category.all를 호출 할 때 반환 이제Mongoid :: 트리

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

:

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

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 

답변

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과 함께 제공되는 Mongoid::Tree::Traversal 모듈을 살펴보십시오. 이것은 Category#traverse 메서드를 제공합니다.이 메서드를 사용하면 호흡 우선 또는 심도 우선 (사용자가 원하는 것, 추측 할 수 있음) 탐색 중에서 선택할 수 있습니다.

주문 및 순회에 대한 자세한 내용은 http://benediktdeicke.com/mongoid-tree/#Orderinghttp://benediktdeicke.com/mongoid-tree/#Traversal

을 참조하십시오.