0

优先权属于用户。优先级可以有 4 个周期(枚举) - :day, :week, :month, :quarter

我正在尝试编写一个活动记录 .count 语句,它可以让我计算出具有优先级的唯一用户的数量,该时间段的值等于:day,:week,:month,:quarter。

所以基本上我想知道有多少人对每个时期的这些值至少有一个优先级。谢谢!

4

2 回答 2

0

您需要在 4 个请求中执行此操作。每个时期一个。

User.where(:priorities => :day).count
User.where(:priorities => :week).count
User.where(:priorities => :month).count
User.where(:priorities => :quarter).count
于 2012-04-06T07:50:55.160 回答
0
Priority.group('period').count('user_id', :distinct => true)

应该为您提供用户计数的句点哈希。按期间分组是使count返回哈希而不是单个值并使计数不同可确保用户不会被重复计算的原因。

检查解释计划,但要使此查询相当快,您可能需要在 period 列上建立索引(可能是 [period, user_id] 索引)

于 2012-04-06T08:06:47.363 回答