Date.today和Date.yesterday是相同的但不在控制台中

Ric*_*wis 3 ruby ruby-on-rails date

我已经查看了有关此主题的其他问题但似乎与我遇到的内容不相符.我有2个范围从今天和昨天查找记录,但它们都返回完全相同的记录.

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')}
Run Code Online (Sandbox Code Playgroud)

在控制台Date.today和Date.yesterday中返回不同的值(即今天和昨天)

列start_date是一个日期字段,所以这应该工作不应该吗?以前有人遇到过这个吗?

谢谢

hou*_*se9 12

Date.today不是时区意识,我相信Date.yesterday是时区意识,1.day.ago绝对是.

用于Date.current代替Date.today(同样适用于Time.now- 不使用它,使用Time.zone.now或快捷方法Time.current)

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/