在rails where子句中由cweek分组created_at

时间:2014-08-27 12:40:32

标签: ruby-on-rails ruby-on-rails-3 date activerecord

我试图逐周分析历史上的一些数据。

目前正在使用

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)

我确定这是一种非常简单的方法。

2 个答案:

答案 0 :(得分:3)

要查找给定年份和周内的所有记录,您可以使用:

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

答案 1 :(得分: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。