什么是active_support/core_ext/date_and_time/calculations
? /date
,/time
和/date_time
分别有Date
,Time
和DateTime
。但是什么是/date_and_time
?
我试图要求它而不是date_time
,然后我为文件中定义的方法获得了NoMethodError。
答案 0 :(得分:4)
那些模块date_and_time
在那里,因为它们是所有Date
,Time
和DateTime
核心扩展包含的模块。这些模块使用相同的方法扩展这些类。因此,它们在Date 和 Time下分组,因为您在所有类中都获得了相同的新方法。
因此,它们是模块,意味着作为扩展包含在内。您不能单独要求它们并期望新功能,除非您想通过include
使用它们来扩展类功能。
这是一个直接来自Rails源代码的例子,说明它是如何使用的(在这种情况下取自core_ext/date/calculations
):
require "active_support/core_ext/date_and_time/calculations"
class Date
include DateAndTime::Calculations
...
end
您可以look at the source yourself或check out the docs添加方法。
例如,在Date
和Time
中使用该扩展程序,您现在可以执行以下操作:
Time.now.last_year
Date.today.last_year
两种类都有相同的方法。