NoMethodError:Date:Class的未定义方法`昨天'

sen*_*nel 4 ruby date

在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的行为也是不同的!

Ste*_*fan 7

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)


Dav*_*ser 6

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)