基于belongs_to关联计数的ActiveRecord查询

时间:2013-07-25 16:25:30

标签: ruby-on-rails postgresql

我有一个可能得分的用户模型

Class User < ActiveRecord::Base
  has_many :scores

我希望能够查询我的postgresql数据库以返回至少有一个分数的用户。

User.where(scores.count >= 1)

如何在不添加counter_cache的情况下完成此任务?

2 个答案:

答案 0 :(得分:1)

更多Rails-ish方式将是

User.joins(:scores).where('scores.user_id > 0')

另外,我认为SELECT count(*)将返回用户数,而不是用户行本身,但我不确定。

答案 1 :(得分:0)

您可以使用EXISTS

SELECT count(*) FROM users
WHERE EXISTS (SELECT 1 FROM scores WHERE scores.user_id = users.id)