1
require 'date'
now = DateTime.now
sunday = now - now.wday

>> sunday = now - now.wday
=> #<DateTime: 53058180361250947/21600000000,-5/24,2299161>

由于sundayis 是一个DateTime对象,我应该能够调用它的实例方法,例如to_dateor midnight,这两个方法都在 Rails 文档中列出。

但是,这就是我得到的

>> sunday.to_time
NoMethodError: undefined method `to_time' for #<DateTime: 53058180361250947/21600000000,-5/24,2299161>
        from (irb):17

实际上,这些实例方法都不适用于它。我正在使用irb模式,我不知道发生了什么。谁能告诉我如何解决这个问题?

4

3 回答 3

2

它们不是 Ruby 方法,它们是 Rails 方法,特别是在 Active Support 中。而且,在 IRB 中,默认情况下不加载 Active Support。

http://api.rubyonrails.org/classes/DateTime.html#method-i-to_time

于 2013-04-18T17:53:30.713 回答
0

将第一行更改为:

require 'active_support/time'
于 2013-04-18T18:02:12.050 回答
0

你没有require主动支持模块。您可以加载整个模块,require 'activesupport/all'但大多数情况下这太过分了。

相反,Active Support 允许我们挑选想要包含在代码中的功能。“ Active Support Core Extensions ”会告诉你一切。您可能想查看以下部分:

于 2013-04-18T18:32:14.010 回答