我有2个模型:用户和活动

我想算出所有超过5个活动的非管理员用户。我可以得到非管理员用户,但是我需要在计算记录前进行一些计算/评估

到目前为止,这就是我所拥有的。

a=User.where(:admin => false)
a.joins(:activities).size


但是,我只希望用户进行5次以上的活动。如何使用Ruby完成此类任务?谢谢

我的用户模型是这样的

has_many :activities, :through => :projects


当我期望单个结果(即使最后是.size)时,也会返回一个数组。请指教。

//对于Mods-我是第3次编辑问题,为什么总是将更新删除?为什么我也不能发表评论? //

最佳答案

用户模型:

class User < ActiveRecord::Base
  has_many :activities
end


要获得活动超过5个的所有非管理员用户的列表,请执行以下操作:

users = User.where(:admin => false).joins(:activities).group('"activities"."user_id"').having('COUNT(activities.id) > 5')


如果将.size添加到末尾,您将获得每个用户带计数器的有序哈希。

10-08 19:31