2016-05-04 29 views
0

我剛開始時看到一個類似下面的活動表,並且我想爲每個用戶每月的活動計數一次。現在的問題是,每個用戶每天都有多行。我需要爲每個用戶每天只計算一行。rails獲取activerecord中每個用戶每個日期的行數sqlite

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 

回答

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的天計數,在過去的一個月中至少一個的活動。」

我不打算通過幾個月的所有可能的排列和計數。希望這會讓你開始! :)

0

您可以使用類似:

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