0

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

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

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

我究竟做错了什么?

更新

我还尝试使用上面的查询来获取用户,它返回一个相同用户的数组,根据他们有多少狗重复多次。

4

2 回答 2

1

试试这个:

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

请参阅api 文档

于 2012-10-25T09:52:03.607 回答
0

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

例如,如果用户 U1 有一条狗,而用户 U2 有两条狗,则连接将返回总共三行......所以不要使用连接,而是尝试使用包含选项......

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

于 2012-10-25T09:52:06.450 回答