Как преобразовать все записи из вложенного набора в реальное дерево HTML
Я используюawesome_nested_set
плагин в моем проекте Rails. У меня есть две модели, которые выглядят так (упрощенно):
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
, Это не решает проблему, но может оказаться полезным.