2012-01-12 2 views
2

내가 작업중인 레일 앱에 트리 메뉴 (simple example of tree menu)를 구현하고 싶습니다. acts_as_tree 또는 Ancestry를 사용할지 여부는 확실하지 않습니다. acts_as_tree를 사용하여 간단한 트리 메뉴를 구현하는 것이 더 쉬울 것으로 보이지만, Ancestry가 더 많이 사용되고 정기적으로 유지 관리됩니다. 아무도 이것에 어떤 생각을 가지고 있습니까?acts_as_tree 대 트리 메뉴의 조상 보석

+0

왜 acts_as_tree를 사용하면 더 간단할까요? 모델에 단 하나의 db 필드가 있기 때문에 조상을 사용하는 것이 좋습니다. http://railscasts.com/episodes/262-trees-with-ancestry – mark

+0

@mark에 관심이 있으실 것입니다. 그러나, 나는 당신이 언급하는 railscast를 따라 가려고했지만 [rake db : migrate] (http://stackoverflow.com/questions/8828204/ancestry-dbmigrate)에 문제가 있습니다. –

+0

아마 다른 질문을해야합니다. 번들 exec rake db : migrate – mark

답변

8

가계를 사용하십시오. adjacency list을 구현하는 acts_as_tree와 대조적으로 materialized path pattern을 구현하므로 더 강력한 쿼리 기능을 제공합니다.
중첩 세트와 같은 다른 옵션도 있지만 일반적으로 구체화 된 경로가 가장 포괄적입니다. 당신이 (예를 들어 매겨진 트리 그리드, 당신이 표시하는 트리의 깊이에 따라 반복하고 들여 쓰기/dedent 사전로드 된 메뉴) DB 수준에서 예약 주문으로 정렬해야하는 경우

https://communities.bmc.com/communities/docs/DOC-9902

을 수행해야 재귀 쿼리 또는 중첩 된 집합이나 중첩 된 간격과 같은 정렬 가능한 인코딩을 사용하십시오. (메모리에 정렬하는 옵션이 아니다, 그것은 거의 절대 없을 경우 즉.)

https://github.com/collectiveidea/awesome_nested_set
https://github.com/clyfe/acts_as_nested_interval

각 기복이있다 . 당신에게 맞는 것을 선택하십시오.

+0

조언을 주셔서 감사합니다. 나는 조상을 생각해 봤습니다. 이제 왜 rake db : migrate가 실패 하는지를 알아야합니다! –

+0

이 주제에 대한 자세한 내용은 https://www.chiliproject.org/boards/2/topics/314를 참조하십시오. – PhuongTT