我已经查看了有关此主题的其他问题但似乎与我遇到的内容不相符。我有两个范围来查找今天和昨天的记录,但它们都返回完全相同的记录。
scope :new_memberships_cash_today, ->() {
where(:start_date => Date.today)
joins(:membership).sum('memberships.cost')}
scope :new_memberships_cash_yesterday, ->() {
where(:start_date => Date.yesterday)
joins(:membership).sum('memberships.cost')}
在控制台Date.today和Date.yesterday中返回不同的值(即今天和昨天)
列start_date是一个日期字段,所以这不应该工作吗?有没有人遇到过这个?
谢谢
答案 0 :(得分:12)
Date.today
不支持时区,我相信Date.yesterday
是时区感知的,1.day.ago
肯定是。
使用Date.current
代替Date.today
(同样适用于Time.now
- 请勿使用它,使用Time.zone.now
或快捷方式Time.current
)< / p>
请参阅http://www.elabs.se/blog/36-working-with-time-zones-in-ruby-on-rails#cheat_sheet
我建议阅读整篇文章以及我最近写的文章 - http://jessehouse.com/blog/2013/11/15/working-with-timezones-and-ruby-on-rails/