Как включить mixin / module во ВСЕ контроллеры ActiveAdmin? - PullRequest
0 голосов
/ 25 января 2020

Я написал модуль - JsonLog - который использует хук append_info_to_payload, предоставленный Rails, для добавления некоторых пользовательских метрик в инструментарий ведения журнала. Я хочу включить / смешать этот модуль в всех контроллерах ActiveAdmin.

Я попробовал следующее, и это работает ...

ActiveAdmin.register MyModel do
  controller do
    include JsonLog
  end
end

... но это заставит меня написать шаблонный код в каждой отдельной модели / контроллере, которые я ' Я зарегистрирован в ActiveAdmin. Как мне сделать это в одном месте (и при этом также убедиться, что этот шаблон никогда не пропущен)?

1 Ответ

1 голос
/ 27 января 2020

Не стесняйтесь читать источник. Существует ActiveAdmin::BaseController, который наследуется от InheritedResources::Base, который, в свою очередь, наследуется от вашего ApplicationController. Если вам действительно нужно специально изменить ActiveAdmin::BaseController, попробуйте это в config/initializers/active_admin.rb:

ActiveAdmin::BaseController.class_eval do
  include JsonLog
end
...