Railsシードでfromからまでの日付範囲を取得したいと思います。
日付範囲((Date.today-10).. Date.today)を生成しようとすると、例外が発生しました。
例外メッセージ:範囲の値が正しくありません
しかし、Railsコンソールではすべてが大丈夫です。
ActiveSupportはそのために合理的だと思います(私のデバッガーは私にそれを教えてくれました)。
Ralls 3.1.3
どうしたの?
Railsシードでfromからまでの日付範囲を取得したいと思います。
日付範囲((Date.today-10).. Date.today)を生成しようとすると、例外が発生しました。
例外メッセージ:範囲の値が正しくありません
しかし、Railsコンソールではすべてが大丈夫です。
ActiveSupportはそのために合理的だと思います(私のデバッガーは私にそれを教えてくれました)。
Ralls 3.1.3
どうしたの?
2つのエッジを分割し、次のようにクラスを確認することで、何が起こっているのかを理解できます。
Date.today.class # => Date
(Date.today - 10).class # => Date
((Date.today - 10)..Date.today).each {|d| puts d.class} # => 10 Date works for me
発生しているエラーは次のようなものです。
('a'..10) # => ArgumentError: bad value for range
範囲の2つのエッジのクラスを投稿できますか?
(Date.today - 10).class => ?
Date.today.class => ?
Rails環境でクラスを上書きしましたか?それはで動作しirb
ますか?
PS:Railsにいるので使用できますが、使用する10.days.ago
必要があります。to_date
ActiveSupport::TimeWithZone
begin
((Date.today - 10)..Date.today).each { |date| puts date }
rescue
$! # => #<NameError: uninitialized constant Date>
end
require 'date'
((Date.today - 10)..Date.today).each { |date| puts date }
# >> 2012-04-06
# >> 2012-04-07
# >> 2012-04-08
# >> 2012-04-09
# >> 2012-04-10
# >> 2012-04-11
# >> 2012-04-12
# >> 2012-04-13
# >> 2012-04-14
# >> 2012-04-15
# >> 2012-04-16