RoR, ne Peut pas effectuer une itération de type DateTime/TimeWithZone
J'ai une tâche simple, lorsque je veux prendre une date de début et une date de fin et une boucle sur les jours/dates. Ce code est utilisé dans ma db:graine tâche rake. Actuellement, mon code a disparu par la suite de tentatives.
(someModel.start_date.to_datetime..someModel.end_date.to_datetime).each {
|x| puts x
}
......
(someModel.start_date...someModel.end_date).each { |x| puts x }
Dans chaque cas, j'obtiens une erreur comme ça.
can't iterate from ActiveSupport::TimeWithZone
or
can't iterate from DateTime
Si quelqu'un a la moindre idée sur la façon d'effectuer une itération sur une gamme de DateTimes je lui en serais grandement reconnaissant.
Vous devez vous connecter pour publier un commentaire.
Vous devez vous assurer que vous faites affaire avec un
Date
objet (en appelantto_date
), alors tout fonctionne comme prévu:Ou avec une gamme:
Vous ne pouvez pas effectuer une itération de
DateTime
. Mais vous pouvez itérer lorsque de début et de fin deintervalle sont des instances de
Date
. Convertir si possible.Et puis regarder ces
Date
méthodes:à utiliser à la place de
each
Si vous souhaitez effectuer une itération sur la plage, vous pourriez envisager une boucle d'étape et de chaque journée, en utilisant quelque chose comme
someModel.start_date + 1.day.to_i