奇怪的是,这发生在控制台中。我本可以在其他情况下理解它,其中 1.day 在一个地方用作输入并提取到其他地方使用,因为 1.day 是 Fixnum 86400,其中#steps
混合了一些特殊的元数据 ( )。
Date
对待,例如,+ 1
表示“增加一天”。Rails 添加了一些行为,以便它理解1.day
事物(86400“秒”,但带有step
of [1, :days]
)实际上意味着+ 1
而不是+ 86400
. 这就是你失去的:
ruby-1.9.2-p290 :171 > d = Date.parse("2010-02-01")
=> #<Date: 2010-02-01 (4910457/2,0,2299161)>
ruby-1.9.2-p290 :172 > d + 86400
=> #<Date: 2246-08-23 (5083257/2,0,2299161)>
ruby-1.9.2-p290 :173 >
因此,该值1.day
被解释为 Fixnum,而不是带有ActiveSupport::Duration
.
irb(main):001:0> Date.parse("2010-02-01") + 1.day.to_i
=> Sun, 23 Aug 2246
因此,如果您在1.day
不立即使用此值的上下文中使用此值,请不要...改用 Fixnum 1 ;)