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

您不能在 where 语句上使用别名,请尝试以下操作

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

我更喜欢尽可能减少数据库查询的“SQL-ish”。

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