как использовать активную поддержку ядра Ext Дата и время - PullRequest
0 голосов
/ 30 мая 2018

Для чего active_support/core_ext/date_and_time/calculations?Есть /date, /time и /date_time для Date, Time и DateTime соответственно.Но что такое /date_and_time для?

Я попытался потребовать его вместо date_time, затем я получил NoMethodError для методов, определенных в файле.

1 Ответ

0 голосов
/ 30 мая 2018

Эти модули 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

Вы можете посмотреть на источник самостоятельно или проверить документы для добавления методов.

Например, с этим расширением в Date и Time теперь вы можете сделать:

Time.now.last_year
Date.today.last_year

Один и тот же метод доступен для обоих классов.

...