4

Railsシードでfromからまでの日付範囲を取得したいと思います。

日付範囲((Date.today-10).. Date.today)を生成しようとすると、例外が発生しました。

例外メッセージ:範囲の値が正しくありません

しかし、Railsコンソールではすべてが大丈夫です。

ActiveSupportはそのために合理的だと思います(私のデバッガーは私にそれを教えてくれました)。

Ralls 3.1.3

どうしたの?

4

2 に答える 2

7

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_dateActiveSupport::TimeWithZone

于 2012-04-16T09:22:41.787 に答える
6
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
于 2012-04-16T09:02:11.563 に答える