如何按周中的每一天检索记录?
这是我的范围:
scope :day_of_week, ->(day_of_week) { where("created_at = ?", day_of_week ) }
我已经尝试过strftime('%w',day_of_week)和DAYOFWEEK()但没有成功。
我正在使用几个月和几年没有问题,我在计算我的观点。我也计算每周的项目,即使我没有收到语法错误,我收到的是0.
答案 0 :(得分:2)
date = DateTime.now
#=> Mon, 06 Apr 2015 20:02:00 +0200
date.strftime('%A')
#=> "Monday"
因此,如果created_at.strftime('%A')
等于您感兴趣的day_of_week
,则需要检查。
答案 1 :(得分:1)
scope :day_of_week, ->(day_of_week) { where("strftime('%w', created_at) = ?", day_of_week.to_s) }
是解决方案。我不太清楚为什么.to_s
有效,但似乎文档不清楚。如果我们认为strftime意味着“String to Time type”,那么它应该需要一个字符串。
答案 2 :(得分:0)
如果有人坚持使用它,则Radolino的答案有效,但是'%w'
会返回您星期几的ID,如下所示:
Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6
但是rails方法Date::DAYS_INTO_WEEK
会给您这个ID:
Sunday: 6, Monday: 0, Tuesday: 1, Wednesday: 2, Thursday: 3, Friday: 4, Saturday: 5
因此,您需要在过滤之前检查params
。