2014-08-27 41 views
3

我试图分析一周一周的历史数据。在rails中按cweek创建组created_at条款

目前使用

Model.where(:created_at => 3.weeks.ago..2.weeks.ago) 
Model.where(:created_at => 2.weeks.ago..1.week.ago) 
..etc 

我想cweek分析。

有没有办法做到这一点合理? 即

Model.where(:created_at.cweek => Date.Now.cweek) 

我敢肯定有一个很简单的方法来做到这一点。

+0

在所有年份或给定年份内? – Stefan 2014-08-27 12:58:05

+0

满意的只是一般的做法。让我们假设一个给定的一年。如果我可以研究如何编写查询,那么我可以计算出年度重叠情况非常舒服。 – Carpela 2014-08-27 13:00:00

回答

3

为了找到一个给定年份和一周之内的所有记录,你可以使用:

week_range = Date.commercial(2014, 35).to_time.all_week 
Model.where(created_at: week_range) 
0

解决这样的:

application_helper.rb

def weeks_ago_range(number) 
    number.weeks.ago.all_week 
end 

然后

Model.where(:created_at => weeks_ago_range(1)).count 

我认为一个上面的转向可能会有更多的一般用途,并且实际上更好地回答了我原来的问题,但有了这个,我甚至不需要知道cweek。

+3

你也可以使用'number.weeks.ago.all_week',它返回相同的范围 – Stefan 2014-08-27 13:16:10