Забелязах различно поведение между 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.
Отговори:
1 за отговор № 1Нямам представа защо не работи, но това изглежда:
(Date.today..(Date.today + 30)).step(7)