我有2个模型:用户和活动
用户和活动之间的关系是:
class User < ActiveRecord::Base
has_many :activities, :through => :projects
end
我想计算最近3个月内登录过的所有用户(last_sign_in_at)至少有5项活动。以下是我到目前为止的情况:
a=User.where(:admin => false)
a.joins(:activities).size
如何限制时间范围并仅获得5个以上活动的人?最后,我想调用.size来获得单个结果(不是数组)。感谢。
答案 0 :(得分:1)
您应该使用counter_cache
(在the documentation for belongs_to
中描述)来存储users
表中的活动计数。然后:
User.where(:admin => false).where("created_at >= ?", 3.months.ago).where("activities_count >= 5)
这将找到非管理员的所有用户,他们是在过去3个月中具有activities_count
的大于或等于(“在...内”)的时间创建的(这是{{1 }}} field)大于或等于5(我对“5 +”的解释。
听起来不错? :)