我想在 Rails 种子中获取从到到的日期范围。
当我尝试生成日期范围 ((Date.today - 10)..Date.today) 时发生异常。
异常消息:范围值错误
但在 Rails 控制台中一切正常。
我认为 ActiveSupport 是合理的(我的调试器告诉我)。
拉尔斯 3.1.3
这是怎么回事?
我想在 Rails 种子中获取从到到的日期范围。
当我尝试生成日期范围 ((Date.today - 10)..Date.today) 时发生异常。
异常消息:范围值错误
但在 Rails 控制台中一切正常。
我认为 ActiveSupport 是合理的(我的调试器告诉我)。
拉尔斯 3.1.3
这是怎么回事?
您可以通过拆分两条边并检查它们的类来了解发生了什么,如下所示:
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