1
В моем приложении у меня есть модель, которая должна включать модуль. Модель имеет атрибут «формат», который определяет, какой модуль должен быть включен. Например, если format == 0
, то модель должна include SingleElimination
, тогда как если format == 1
, тогда модель должна include DoubleElmination
. Каков наилучший способ сделать это?Динамически включать модуль в ActiveRecord
У меня возникли вопросы: почему используется расширение? – Max
@Max Я использую 'extend', потому что' include' не определен в контексте тела метода. Таким образом, принятый ответ вызовет 'MethodNotDefined'. Кроме того, 'include', как описано в этом ответе, работает таким образом, когда вызывается в классе класса. Это, однако, другой контекст, тогда в теле метода, где 'extend' добавляет его туда, куда он должен идти. –
Я вижу, спасибо за понимание. Я не знал об этом различии при расширении. Однако ваша реализация неверна. Вы не можете вызывать формат в фильтре after_initialize. Я получаю слишком мало аргументов. Чтобы исправить это, мне пришлось использовать лямбду. Я редактировал то, что сработало для меня. – Max