0

好的,我有棘手的红宝石问题。我有类别和文件,其中文件低于 1 类。仅以下到第 2 级类别的文档,例如:(请原谅块引用)

类别 1 --> 组 1 --> [文档 1、文档 2、文档 3]

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

第 2 类 --> 第 1 组 --> [文档 7]

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

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

category.associated_docs.count

但是,我如何找到 1 级类别的所有子项中的文档总数?

我知道我可以执行以下操作,但是如何获得总和?

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

谢谢!

4

1 回答 1

1

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

否则,您可能想尝试以下方法:

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

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

于 2013-07-13T09:41:49.393 回答