Count返回所有已连接数据的计数,而不是主对象

时间:2012-10-25 09:40:35

标签: ruby-on-rails activerecord

我正在尝试计算有狗的用户。

User.joins(:pets).where("pets.type = ?", :dog).count

这将返回用户+他们的狗组合的计数,而我只想要实际用户的数量。

我做错了什么?

更新

我还尝试使用上述查询获取用户,并根据他们拥有的狗数重复多次重复相同用户的数组。

2 个答案:

答案 0 :(得分:1)

试试这个:

User.joins(:pets).where("pets.type = ?", :dog).count(distinct: true)

请参阅api doc

答案 1 :(得分:0)

连接将返回用户具有多个关联的所有重复行...

例如,如果用户,U1有一只狗和用户,U2有两只狗,那么连接将返回总共三行....所以不要使用连接,而是尝试使用包含选项... < / p>

请参阅此Railscast,http://railscasts.com/episodes/181-include-vs-joins了解更多信息......