【问题标题】:Filter model association count by date?按日期过滤模型关联计数?
【发布时间】:2013-12-07 02:05:27
【问题描述】:
我有以下型号:User、Call。
一个Userhas_manyCalls。
一个呼叫有一个列:created_at
我需要过滤过去 'x' 天内来电次数最多的用户。
到目前为止我在这里:
User.includes(:calls).limit(10).where("created_at > ?", Time.now - 20.days)
【问题讨论】:
标签:
mysql
sql
ruby-on-rails
ruby
activerecord
【解决方案1】:
您应该从这里的呼叫,而不是用户。
比如:
Call.where("created_at > ?", Time.now - 20.days).group(:user_id).order("count(user_id) DESC").count("user_id")
因此,您会得到一个带有键 - 用户 ID 和值 - 调用次数的哈希
【解决方案2】:
User.includes(:calls).where("calls.created_at > ?", Time.now - 20.days).limit(10)