2012-03-23 57 views
3

我注意到Rails 2和Rails 3在ActiveSupport日期處理方面的一些不同行爲。Rails 2.3和Rails 3.2'周'方法的區別

當我在Rails 2.3應用程序中運行下面的代碼時,它按照我的預期運行,並一次輸出一週的日期。

>> first = Date.today 
=> Fri, 23 Mar 2012 
>> last = Date.today + 2.months 
=> Wed, 23 May 2012 
>> first.step(last, 1.week) { |date| puts date } 
2012-03-23 
2012-03-30 
2012-04-06 
2012-04-13 
2012-04-20 
2012-04-27 
2012-05-04 
2012-05-11 
2012-05-18 

當我嘗試一個Rails 3應用程序中相同的代碼,我得到以下。

>> first = Date.today 
=> Fri, 23 Mar 2012 
>> last = Date.today + 2.months 
=> Wed, 23 May 2012 
>> first.step(last, 1.week) { |date| puts date } 
Mar 23, 2012 
TypeError: expected numeric 

的問題似乎是如何Rails 3的現在處理.weeks方法,軌道2輸出以下

>> 1.week 
=> 7 days 

Rails所3個輸出

>> 1.week 
=> 604800 

誰能解釋這裏發生了什麼,以及如何在Rails 3中一次一週地整齊迭代日期範圍。

+1

,在Rails的3.2,我工作得很好。 – 2012-03-23 06:14:41

+0

我正在運行Rails 3.2.1,你用同樣的版本測試過嗎? – 2012-03-23 06:35:02

+0

我在Rails控制檯中使用3.2.1進行了檢查。如果我強迫它成爲'1.week.to_i'之類的數字,我可以從'1.week'中得到604800。 – 2012-03-23 17:01:26

回答

1

不知道爲什麼,這是行不通的,但這似乎:

(Date.today..(Date.today + 30)).step(7) 
+0

對我來說也有7件作品,但它只是沒有相同的含義或閱讀以及1.week – 2012-03-25 23:40:33

+0

你是對的,它不太清楚。把它分解成一個命名方法? – 2012-05-02 00:07:41