在 ActiveSupport 日期处理方面,我注意到 Rails 2 和 Rails 3 之间存在一些不同的行为。
当我在 Rails 2.3 应用程序中运行以下代码时,它会按预期运行并一次输出一周的日期。
>> first = Date.today
=> Fri, 23 Mar 2012
>> last = Date.today + 2.months
=> Wed, 23 May 2012
>> first.step(last, 1.week) { |date| puts date }
2012-03-23
2012-03-30
2012-04-06
2012-04-13
2012-04-20
2012-04-27
2012-05-04
2012-05-11
2012-05-18
当我在 Rails 3 应用程序中尝试相同的代码时,我得到以下结果。
>> first = Date.today
=> Fri, 23 Mar 2012
>> last = Date.today + 2.months
=> Wed, 23 May 2012
>> first.step(last, 1.week) { |date| puts date }
Mar 23, 2012
TypeError: expected numeric
问题似乎在于 Rails 3 现在如何处理 .weeks 方法,Rails 2 输出如下
>> 1.week
=> 7 days
Rails 3 输出的地方
>> 1.week
=> 604800
任何人都可以解释这里发生了什么,以及我如何在 Rails 3 中一次一周地巧妙地迭代日期范围。
最佳答案
不知道为什么它不起作用,但这似乎:
(Date.today..(Date.today + 30)).step(7)
关于ruby-on-rails - Rails 2.3 和 Rails 3.2 'weeks' 方法的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9834763/