ruby/rails中的日期范围

Pau*_*rit 4 ruby ruby-on-rails

我想在Rails种子中获取从和之间的日期范围.

当我尝试生成日期范围((Date.today - 10).. Date.today)发生异常时.

异常消息:范围的错误值

但是在Rails控制台中一切都很好.

我认为ActiveSupport是合理的(我的调试器告诉我).

Ralls 3.1.3

这是怎么回事?

Jos*_*eek 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
Run Code Online (Sandbox Code Playgroud)


eco*_*gic 6

您可以通过拆分两条边来理解发生了什么,并检查它们的类,如下所示:

Date.today.class #  => Date 
(Date.today - 10).class # => Date 
((Date.today - 10)..Date.today).each {|d| puts d.class} # => 10 Date works for me
Run Code Online (Sandbox Code Playgroud)

您遇到的错误是这样的:

('a'..10) # => ArgumentError: bad value for range
Run Code Online (Sandbox Code Playgroud)

你可以发布你的2个边缘的类吗?

(Date.today - 10).class => ?
Date.today.class       => ?
Run Code Online (Sandbox Code Playgroud)

你有没有覆盖rails环境中的任何课程?它有效irb吗?

PS:你可以使用rails,10.days.ago但是你需要使用to_date它,因为它是一个ActiveSupport::TimeWithZone