犬を飼っているユーザーを数えようとしています。
User.joins(:pets).where("pets.type = ?", :dog).count
これは、ユーザーとその犬を組み合わせた数を返します。代わりに、実際のユーザーの数が必要です。
私は何を間違っていますか?
アップデート
また、上記のクエリを使用してユーザーをフェッチしようとしましたが、犬の数に応じて、同じユーザーの配列が複数回繰り返されて返されます。
犬を飼っているユーザーを数えようとしています。
User.joins(:pets).where("pets.type = ?", :dog).count
これは、ユーザーとその犬を組み合わせた数を返します。代わりに、実際のユーザーの数が必要です。
私は何を間違っていますか?
また、上記のクエリを使用してユーザーをフェッチしようとしましたが、犬の数に応じて、同じユーザーの配列が複数回繰り返されて返されます。
結合は、ユーザーが複数の関連付けを持っているすべての重複行を返します...
たとえば、ユーザー U1 が 1 匹の犬を飼っていて、ユーザー U2 が 2 匹の犬を飼っている場合、合計 3 行が結合によって返されます....したがって、結合を使用する代わりに、includes オプションを使用してみてください...
詳細については、このRailscast、http: //railscasts.com/episodes/181-include-vs-joinsを参照してください...