Difference between Rails 2.3 and Rails 3.2 'weekly method

I noticed some different behavior between Rails 2 and Rails 3 when it comes to ActiveSupport date handling.

When I run the following code in a Rails 2.3 application, it runs as I expect and outputs the dates one week at a time.

>> 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

      

When I try to use the same code in a Rails 3 application, I get the following.

>> 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

      

The problems seem to be related to how Rails 3 now handles the .weeks method, Rails 2 outputs the following

>> 1.week
=> 7 days

      

Where Rails 3 outputs

>> 1.week
=> 604800

      

Can anyone please explain what is going on here and how I can neatly iterate over a weekly date range in Rails 3.

+3


source to share


1 answer


Not sure why it doesn't work, but it looks like:



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

      

+1


source







All Articles