1

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

Class User < ActiveRecord::Base
  has_many :scores

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

User.where(scores.count >= 1)

关于如何在不添加 counter_cache 的情况下完成此操作的任何想法?

4

2 回答 2

1

一种更类似于 Rails 的方式是

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

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

于 2013-07-25T16:33:43.353 回答
0

你可以使用EXISTS

SELECT count(*) FROM users
WHERE EXISTS (SELECT 1 FROM scores WHERE scores.user_id = users.id)
于 2013-07-25T16:27:21.407 回答