ruby / rails中的日期范围

时间:2012-04-16 08:50:29

标签: ruby-on-rails ruby

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

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

异常消息:范围错误值

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

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

Ralls 3.1.3

发生了什么事?

3 个答案:

答案 0 :(得分: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

您遇到的错误是这样的:

('a'..10) # => ArgumentError: bad value for range

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

(Date.today - 10).class => ?
Date.today.class       => ?

您是否覆盖了rails环境中的任何课程?它是否适用于irb

PS:当您处于轨道状态时,您可以使用10.days.ago,但是您需要使用to_date,因为它是ActiveSupport::TimeWithZone

答案 1 :(得分:4)

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

答案 2 :(得分:0)

一切正常对我来说我也使用rails 3.1.3,我的ruby版本是1.9.2p290,也许你需要更新你的ruby版本?