我有一个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)等。
有没有人对如何干净地执行此操作有任何建议,并最大限度地减少对视图加载的查询?
答案 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)