2014-09-03 20 views
3

每個答案張貼在SO(是的,我檢查)似乎有require 'date'作爲解決方案。我已經這樣做了,我的代碼仍然無法工作。NoMethodError:未定義的方法`昨天'爲日期:類

require 'date' 

yesterday = RepSched::Helpers.datestring(Date.yesterday) 

出於某種原因,的Ruby on Date.yesterday

NoMethodError: undefined method `yesterday' for Date:Class 

扼流圈什麼我做錯了什麼?

編輯

哦,不!現在我的問題比我想象的要大。現在我已經意識到這個問題了,我意識到DateTime的行爲也是不同的!

+4

'yesterday'由 – Stefan 2014-09-03 14:56:05

+1

你確定你下的Rails運行Rails的增加了一個方法? – 2014-09-03 14:56:21

+0

哦。西納特拉。哈,woops! – sent1nel 2014-09-03 14:57:56

回答

6

yesterday由Rails/Active Support提供。您可以要求它在你的非Rails項目:

require 'active_support/core_ext/date/calculations' 

Date.yesterday 
#=> #<Date: 2014-09-02 ((2456903j,0s,0n),+0s,2299161j)> 

或者自己進行計算:

require 'date' 

Date.today - 1 
#=> #<Date: 2014-09-02 ((2456903j,0s,0n),+0s,2299161j)> 
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)> 
+0

我選擇了這個答案,因爲它更好地描述了我的問題。 – sent1nel 2014-09-03 15:28:05

相關問題