Using Joins, Uniq and Group_by_month(:created_at)



你好,我又在写问题了

所以我有3个模型'用户' '同伴' '任务'

User. has_many: companions, has_many: tasks
Companion: belongs_to: user
Task: belongs_to: user

和我需要的数据是用户的每月数据,用户谁有同伴,然后最后谁订购了任务

所以我试着用这个代码

User.group_by_month(:created_at).count

直到这里我才能够得到我所想的数据

User.joins(:companions).uniq.group_by_month(:created_at).count

和I每月计算有伴侣的用户数量但它根本不起作用

然后我还需要加入一个"任务",以找出哪个用户有一个同伴,并订购了一个任务

所以我想看到的结果是

用户月注册数

Aug, 2020 = > 300

有同伴的用户

Aug, 2020 = > 150

有同伴并订购任务的用户

Aug, 2020 = > 75

我需要唯一号码的用户谁有同伴,和用户谁有同伴,也订购了一个任务

Uniq适用于数组。对于collection of records,可以使用distinct

检查:https://apidock.com/rails/v5.2.3/ActiveRecord/QueryMethods/distinct

这意味着你可以使用:

User.joins(:companions).distinct.group_by_month(:created_at).count

最新更新