Ho notato un comportamento diverso tra Rails 2 e Rails 3 per quanto riguarda la gestione delle date di ActiveSupport.
Quando eseguo il codice seguente in un'applicazione Rails 2.3, viene eseguito come mi aspetto e le date vengono visualizzate una settimana alla volta.
>> 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
Quando provo lo stesso codice in un'applicazione Rails 3 ottengo il seguente.
>> 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
Sembra che i problemi riguardino il modo in cui Rails 3 sta ora gestendo il metodo .weeks, Rails 2 restituisce quanto segue
>> 1.week
=> 7 days
Dove uscite Rails 3
>> 1.week
=> 604800
Qualcuno può spiegare cosa sta succedendo qui e come posso ripetere iteramente su un intervallo di date una settimana alla volta in Rails 3.
risposte:
1 per risposta № 1Non ho idea del motivo per cui non funziona, ma questo sembra:
(Date.today..(Date.today + 30)).step(7)