ruby on rails - run - RoR, no se puede iterar desde DateTime/TimeWithZone
seed rails 5 (4)
Tengo una tarea sencilla en la que quiero tomar una fecha de inicio y una fecha de finalización y un ciclo en los días / fechas. Este código se está utilizando en mi tarea de rastrillo de db: seed. Actualmente, mi código ha pasado por los siguientes intentos.
(someModel.start_date.to_datetime..someModel.end_date.to_datetime).each {
|x| puts x
}
......
(someModel.start_date...someModel.end_date).each { |x| puts x }
En cada caso, me sale un error como este.
can''t iterate from ActiveSupport::TimeWithZone
or
can''t iterate from DateTime
Si alguien tiene alguna idea de cómo iterar en un intervalo de DateTimes, le estaré muy agradecido.
Debe asegurarse de que está tratando con un objeto Date
(llamando a to_date
), luego todo funciona como se espera:
start_date.to_date.upto(end_date.to_date) {|date| puts date }
O con un rango:
(start_date.to_date..end_date.to_date).to_a
Si desea iterar en el rango, puede considerar un bucle y un paso cada día usando algo como someModel.start_date + 1.day.to_i
start = someModel.start_date.to_datetime
finish = someModel.end_date.to_datetime
while(start < finish) do
#bunch of awesome stuff
start += 1.day
end