计算基于树的类别结构的子类别中的文档

时间:2013-07-13 05:53:08

标签: ruby count tree

好的,我有一个棘手的红宝石问题。 我有类别和文件,其中下面的文件为1类。仅在下面的文档中记录2级类别:(请原谅块引用)

Cat 1 - >第1组 - > [文件1,文件2,文件3]

  --> Group 2 --> [Doc 4, Doc 5, Doc 6]

Cat 2 - >第1组 - > [Doc 7]

  --> Group 2 --> [Doc 8]

我已使用此代码成功确定了第二级(例如,第1组)中每个类别的文档数量:

category.associated_docs.count

但是,如何找到1级别所有孩子的文件总数?

我知道我可以做以下事情,但如何获得总和呢?

category.children.each do |category|
  category.associated_docs.count

三江源!

1 个答案:

答案 0 :(得分:1)

如果文档在ActiveRecord中,那么您可能希望执行SQL查询以有效地选择所有关联的文档,然后对这些文档执行计数。否则涉及迭代ruby对象数组的命令可能需要一段时间。

否则,您可能需要尝试以下内容:

category.children.map {|类别| category.associated_docs} .flatten.count

map命令将返回一个包含许多子数组的数组,每个子数组包含每个类别的相关文档。 flatten命令将这些命令合并为一个单级数组,使用count来计算它们是非常简单的。