rails在activerecord sqlite中获取每个用户每个用户的行数

时间:2016-05-04 03:28:25

标签: sql ruby-on-rails sqlite activerecord

我开始使用的活动表如下图所示,我希望了解每个用户每月的活动数量。问题是现在,每个用户每天有多行。我需要为每个用户每天只计算一行。

Activities

Activity_id  |   user_id |  activity_type |  created_at

1                  1          time_trial        2016-04-30
2                  1          time_trial        2016-04-30
3                  1          time_trial        2016-04-31
4                  3          time_trial        2016-04-31
5                  3          time_trial        2016-04-31
6                  1          time_trial        2016-04-32

我认为结果表应该像

user_id  |   activities per month

1                  3
3                  1

2 个答案:

答案 0 :(得分:0)

你想要the ActiveRecord group method

您的查询类似于:

Activity.where(user_id: 1).group("date(created_at)").count

...获取“至少有一项活动计算用户1的日期。”

如果您想逐个月地获取use ActiveRecord range conditions。 (您需要向下滚动到第2.3.2节)

Activity.where(user_id: 1).where(created_at: (1.month.ago..Time.now)).group("date(created_at)").count

...获取“用户1天数,过去一个月内至少有一项活动。”

我不会经历几个月的所有可能的排列和计数。希望这能让你开始! :)

答案 1 :(得分:0)

您可以使用以下内容:

Activity.where(:user_id=>user.id).group_by { |data| data.created_at).to_date }