Я заметил несколько различное поведение Rails 2 и Rails 3, когда дело доходит до обработки даты ActiveSupport.
Когда я запускаю следующий код в приложении 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, Rails 2 выводит следующее
>> 1.week
=> 7 days
Где Rails 3 выводит
>> 1.week
=> 604800
Может кто-нибудь объяснить, что здесь происходит, и как я могу аккуратно перебирать диапазон дат по одной неделе в Rails 3.