3

作業中のRailsアプリにツリーメニュー(ツリーメニューの簡単な例)を実装したいと思います。acts_as_treeとAncestryのどちらを使用するかわかりません。Acts_as_treeを使用して単純なツリーメニューを実装する方が簡単なようですが、Ancestryの方が人気があり、定期的に保守されています。誰かがこれについて何か考えを持っていますか?

4

1 に答える 1

11

祖先を使用します。隣接リストを実装するacts_as_treeとは対照的に、マテリアライズドパスパターンを実装するため、より強力なクエリ機能を備えています。 ネストされたセットのような他のオプションもありますが、通常、マテリアライズドパスが最も包括的です。

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

DBレベルで事前順序で並べ替える必要がある場合(たとえば、ページ化されたツリーグリッド、表示するツリーの深さに応じて繰り返してインデント/ディデントするプリロードされたメニュー)、再帰クエリまたは並べ替え可能なエンコーディングを使用する必要があります入れ子集合や入れ子間隔のように。(つまり、メモリ内での並べ替えがオプションではなく、ほとんどの場合オプションではありません。)

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

それぞれに浮き沈みがあります。自分に合ったものを選択してください。

于 2012-01-12T14:15:24.987 に答える