開始日と終了日を取り、日/日付をループする単純なタスクがあります。このコードは私のdb:seed rakeタスクで使用されています。現在、私のコードは次の試みを経ています。
(someModel.start_date.to_datetime..someModel.end_date.to_datetime).each {
|x| puts x
}
......
(someModel.start_date...someModel.end_date).each { |x| puts x }
いずれの場合も、このようなエラーが発生します。
can't iterate from ActiveSupport::TimeWithZone
or
can't iterate from DateTime
誰かがDateTimeの範囲を反復処理する方法について手がかりを持っている場合、私は非常に感謝します。
start = someModel.start_date.to_datetime
finish = someModel.end_date.to_datetime
while(start < finish) do
#bunch of awesome stuff
start += 1.day
end
(to_date
を呼び出して)Date
オブジェクトを処理していることを確認する必要があります。そうすると、すべてが期待どおりに機能します。
start_date.to_date.upto(end_date.to_date) {|date| puts date }
または範囲付き:
(start_date.to_date..end_date.to_date).to_a
範囲を反復処理する場合は、ループを検討し、someModel.start_date + 1.day.to_i
のようなものを使用して毎日ステップすることができます。