Rails范围记录按星期几记录

时间:2014-09-26 12:48:36

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

我有一个Rails 3.2.14应用程序,我使用仪表板提供基本统计信息,例如当天的通话计数等。我有多个范围来计算今天,年初至今和前一年的呼叫。我想添加一种方法来计算本周M,T,W,Th,Fri,Sat,Sun周日的电话数。

到目前为止,我写了一个简单的范围,它传递了一个日期参数和查询transfer_date,如下所示:

call.rb

scope :by_day,  lambda { |date| where('transfer_date BETWEEN ? AND ?', date.beginning_of_day, date.end_of_day) }

所以,如果我这样做:Call.by_day(1.day.ago)我会在24小时内获得昨天所有来电的数组。

在我看来,我可以简单地做@call.by_day(1.day.ago).count @call.by_day(2.day.ago).count等。但是我想约束当前的数字,否则这是7天的运行次数。我想在每个输出上面我可以做<%= 1.day.ago.strftime("%m/%d/%y") %> <%= 2.day.ago.strftime("%m/%d/%y") %>等等。但这似乎不太干净。

总而言之,我希望得到一周的快照,按周计算,每个都有一天标签(星期一,星期二等)或日期标签(9/22 / 14,19 / 23/14)等。

有没有人对如何干净地执行此操作有任何建议,并最大限度地减少对视图加载的查询?

1 个答案:

答案 0 :(得分:0)

我有一个名为by_star的宝石。

以下是自述文件中的一些示例:

Post.by_year(2013)                           # all posts in 2013
Post.before(Date.today)                      # all posts for before today
Post.yesterday                               # all posts in 2013
Post.between_times(Time.zone.now - 3.hours,  # all posts in last 3 hours
                  Time.zone.now)
@post.next                                   # next post after a given post

要获得一天的帖子,

Post.by_day(1.day.ago)