awesome_nested_set
Rails プロジェクトでプラグインを使用しています。次のような 2 つのモデルがあります (簡略化)。
class Customer < ActiveRecord::Base
has_many :categories
end
class Category < ActiveRecord::Base
belongs_to :customer
# Columns in the categories table: lft, rgt and parent_id
acts_as_nested_set :scope => :customer_id
validates_presence_of :name
# Further validations...
end
データベース内のツリーは期待どおりに構築されます。parent_id
、lft
およびのすべての値rgt
は正しいです。ツリーには複数のルート ノードがあります (これはもちろん で許可されていawesome_nested_set
ます)。
<ul>
ここで、特定の顧客のすべてのカテゴリを、構造のような正しくソートされたツリー (ネストされたタグなど) にレンダリングしたいと考えています。これはそれほど難しくありませんが、効率的である必要があります (SQL クエリが少ないほど良い)。
更新: SQL クエリをさらに実行しなくても、ツリー内の任意のノードの子の数を計算できることがわかりました: number_of_children = (node.rgt - node.lft - 1)/2
. これで問題が解決するわけではありませんが、役に立つかもしれません。