Ruby on rails 试图获得复杂的唯一用户数

Ruby on rails 试图获得复杂的唯一用户数,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,优先级属于用户。优先级可以有4个时段(枚举)-:天、:周、:月、:季度 我正在尝试编写一个active record.count语句,该语句可获取具有优先级且周期值等于:天、:周、:月、:季度的唯一用户的计数 所以基本上我想知道有多少人在一段时间内对这些值至少有一个优先级。谢谢 您需要在4个请求中完成此操作。每个周期一个 User.where(:priorities => :day).count User.where(:priorities => :week).count User.

优先级属于用户。优先级可以有4个时段(枚举)-:天、:周、:月、:季度

我正在尝试编写一个active record.count语句,该语句可获取具有优先级且周期值等于:天、:周、:月、:季度的唯一用户的计数


所以基本上我想知道有多少人在一段时间内对这些值至少有一个优先级。谢谢

您需要在4个请求中完成此操作。每个周期一个

User.where(:priorities => :day).count
User.where(:priorities => :week).count
User.where(:priorities => :month).count
User.where(:priorities => :quarter).count
应该为用户计数提供句点哈希。按时段分组使
count
返回一个散列值而不是单个值,并使计数不同可确保用户不会重复计数


检查解释计划,但要使此查询速度合理,您可能需要在时段列上建立索引(可能是[period,user\u id]索引)

这实际上是优先级计数,而不是用户计数。这是计算每个时段的不同用户id数。如果这与每个时段具有优先级的用户数量不同,那么我误解了您的数据模型。举一个所需输入/输出数据的例子,这可能会有帮助,因为:天、:周、:月、:季度的值被分配给优先级[:期间],这在您的调用中没有提到。您可以粘贴模型以格式化一个好的答案,因为我不理解您的模式。优先权是一个杂凑?
Priority.group('period').count('user_id', :distinct => true)