ActiveRecord has_many计数具有匹配子对象的父对象

时间:2016-02-18 22:00:06

标签: ruby-on-rails ruby activerecord

我正在尝试找到执行此查询的Ruby方法。我有两个对象DocumentComponent。组件belongs_to文档和文档可以包含零个,一个或多个组件。

我想要的是具有组件的所有文档的计数。我不在乎文件只有一个组件或二十个组件。

我尝试做的是Component.group(:document_id).count,但这给了我一个哈希:{162=>1, 163=>2}(文档162有1个组件,文档163有2个。)

所以基本上给出了这个结果,我希望返回的查询是2(文档162和163是唯一具有组件的文档)。

2 个答案:

答案 0 :(得分:1)

Document.joins(:components).uniq.count

答案 1 :(得分:1)

根据您目前正在做的事情:

Component.group(:document_id).count.keys.uniq.count