令人敬畏的嵌套集 - 如何获得任何子树的声明?

时间:2011-11-23 18:03:16

标签: mysql ruby ruby-on-rails-3 tree nested-sets

我是新手,我正在玩这个宝石。我在数据库中有一个树形结构。但是现在我正在苦苦挣扎,如何在第一级获得项目声明......或者在第一级或第二级的计数项目...

有人可以帮我解决这个问题吗? 我在GitHub上找到了这个循环的项目声明:

Category.each_with_level(Category.root.self_and_descendants) do |category, level|
  ...
end

但我仍然不知道,如何使用它...我会为每一个提示感到高兴!

非常感谢

2 个答案:

答案 0 :(得分:1)

您可以遍历所有类别并计算第1级的项目。

在Rails控制台中尝试以下操作:

count = 0
Category.each_with_level(Category.all) do |account, level|
    count += 1 if level == 1
end
puts count

要打印项目,您可以试试这个:

Category.each_with_level(Category.all) do |account, level|
    puts "#{level} - #{category.name}"
end

答案 1 :(得分:0)

如果您添加了可选的depth字段,则可以通过以下方式获得结果:

count = Category.where(depth: 1).count