0

has_many 関係が空でない場合にのみ結果を返すデータベース クエリを実行しようとしています。以下は has_many :gift_images の例です:

Gift.joins(:gift_images).includes(:gift_images, :comments, :category, :user).select("gifts.*, COUNT(gift_images.id) AS gcount").where("gcount > 0")

そのようなものですが、うまくいきません。何か案は?

4

2 に答える 2

1

可能であれば、db クエリを "SQL っぽい" より少なく保つことを好みます。

Gift.where(id: GiftImage.where('gift_id IS NOT NULL').select('gift_id') ).count
于 2013-02-09T16:35:10.490 に答える
1

whereステートメントでエイリアスを使用することはできません。次を試してください

Gift.where("(SELECT COUNT(*) FROM gift_images WHERE gift_images.gift_id = gifts.id) > 0")
于 2013-02-09T15:39:20.417 に答える