在SO上发布的每个答案(是的,我检查过)似乎都有require 'date'解决方案.我已经完成了,我的代码仍然无法正常工作.
require 'date'
yesterday = RepSched::Helpers.datestring(Date.yesterday)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,Ruby在Date.yesterday上窒息
NoMethodError: undefined method `yesterday' for Date:Class
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑
不好了!现在我的问题比我想象的要大.现在我已经意识到这个问题,我意识到DateTime的行为也是不同的!
yesterday由Rails/Active Support提供.您可以在非Rails项目中要求它:
require 'active_support/core_ext/date/calculations'
Date.yesterday
#=> #<Date: 2014-09-02 ((2456903j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)
或者自己计算:
require 'date'
Date.today - 1
#=> #<Date: 2014-09-02 ((2456903j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)
Rails可能有点痛苦,因为它增加了Date许多Ruby新手的新方法.你可以通过以下方式获得yesterday,而不使用Rails:
$ pry
[1] pry(main)> require 'date'
=> false
[2] pry(main)> Date.today
=> #<Date: 2014-09-03 ((2456904j,0s,0n),+0s,2299161j)>
[4] pry(main)> Date.today - 1
=> #<Date: 2014-09-02 ((2456903j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)