我有一个可能得分的用户模型
Class User < ActiveRecord::Base
has_many :scores
我希望能够查询我的 postgresql 数据库以返回至少有一个分数的用户。
User.where(scores.count >= 1)
关于如何在不添加 counter_cache 的情况下完成此操作的任何想法?
我有一个可能得分的用户模型
Class User < ActiveRecord::Base
has_many :scores
我希望能够查询我的 postgresql 数据库以返回至少有一个分数的用户。
User.where(scores.count >= 1)
关于如何在不添加 counter_cache 的情况下完成此操作的任何想法?
一种更类似于 Rails 的方式是
User.joins(:scores).where('scores.user_id > 0')
另外,我认为 SELECT count(*) 将返回用户数,而不是用户行本身,但我不确定。
你可以使用EXISTS
:
SELECT count(*) FROM users
WHERE EXISTS (SELECT 1 FROM scores WHERE scores.user_id = users.id)