我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
. 这并不能解决问题,但可能会有所帮助。