/ / Rails 2.3とRails 3.2の「週」メソッドの違い-ruby-on-rails、ruby

Rails 2.3とRails 3.2 'weeks'の違い - ruby​​-on-rails、ruby

ActiveSupportの日付処理に関しては、Rails 2とRails 3の動作が異なることに気付きました。

Rails 2.3アプリケーションで次のコードを実行すると、期待どおりに実行され、一度に1週間ずつ日付が出力されます。

>> 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メソッドをどのように処理しているかにあるようです。Rails2は以下を出力します

>> 1.week
=> 7 days

Rails 3が出力する場所

>> 1.week
=> 604800

ここで何が起こっているのか、Rails 3で一度に1週間の日付範囲をきれいに繰り返す方法を誰もが説明できますか?

回答:

回答№1は1

なぜ機能しないのかわかりませんが、これは次のように思われます:

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