为什么没有任何实例方法适用于DateTime对象?

时间:2013-04-18 17:50:26

标签: ruby-on-rails ruby

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

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

由于sundayDateTime对象,我应该可以调用其实例方法,例如to_datemidnight,这两种方法都列在Rails文档中。

但是,这就是我得到的

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

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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

将第一行更改为:

require 'active_support/time'

答案 2 :(得分:0)

您没有require Active Support模块。您可以使用require 'activesupport/all'加载整个模块,但这在大多数情况下都是过度的。

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