【发布时间】:2010-11-25 05:37:54
【问题描述】:
我在我的 Rails 项目中使用awesome_nested_set 插件。我有两个看起来像这样的模型(简化):
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。这并不能解决问题,但可能会有所帮助。
【问题讨论】:
标签: sql ruby-on-rails ruby activerecord nested-sets