Ruby on rails 具有多个关系的Activerecord请求为空

Ruby on rails 具有多个关系的Activerecord请求为空,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我试图做一个数据库查询,它只返回has_许多关系不是空的结果。下面是一个示例,其中有许多:礼品图片: Gift.joins(:gift_images).includes(:gift_images, :comments, :category, :user).select("gifts.*, COUNT(gift_images.id) AS gcount").where("gcount > 0") 像那样的东西,但不起作用。有什么想法吗?您不能在where语句上使用别名,请尝试以下方法 Gi

我试图做一个数据库查询,它只返回has_许多关系不是空的结果。下面是一个示例,其中有许多:礼品图片:

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

像那样的东西,但不起作用。有什么想法吗?

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

Gift.where("(SELECT COUNT(*) FROM gift_images WHERE gift_images.gift_id = gifts.id) > 0")

在可能的情况下,我更喜欢保持数据库查询不太“SQL化”

Gift.where(id: GiftImage.where('gift_id IS NOT NULL').select('gift_id') ).count