如何在所有 ActiveAdmin 控制器中包含 mixin/module?
How to include a mixin/module in ALL ActiveAdmin controllers?
我编写了一个模块 - JsonLog
- 它使用 Rails 提供的 append_info_to_payload
挂钩将一些自定义指标添加到日志记录工具中。我想 include/mixin 这个模块在 所有 ActiveAdmin 的控制器中。
我试过以下方法,效果很好...
ActiveAdmin.register MyModel do
controller do
include JsonLog
end
end
...但这将迫使我在我向 ActiveAdmin 注册的每个 model/controller 中编写样板代码。我如何在一个地方执行此操作(并且在此过程中还要确保绝不会遗漏此样板文件)?
不要羞于阅读源代码。有一个 ActiveAdmin::BaseController
继承自 InheritedResources::Base
,后者又继承自您的 ApplicationController
。如果你真的需要专门修改 ActiveAdmin::BaseController
那么在 config/initializers/active_admin.rb
:
中试试这个
ActiveAdmin::BaseController.class_eval do
include JsonLog
end
我编写了一个模块 - JsonLog
- 它使用 Rails 提供的 append_info_to_payload
挂钩将一些自定义指标添加到日志记录工具中。我想 include/mixin 这个模块在 所有 ActiveAdmin 的控制器中。
我试过以下方法,效果很好...
ActiveAdmin.register MyModel do
controller do
include JsonLog
end
end
...但这将迫使我在我向 ActiveAdmin 注册的每个 model/controller 中编写样板代码。我如何在一个地方执行此操作(并且在此过程中还要确保绝不会遗漏此样板文件)?
不要羞于阅读源代码。有一个 ActiveAdmin::BaseController
继承自 InheritedResources::Base
,后者又继承自您的 ApplicationController
。如果你真的需要专门修改 ActiveAdmin::BaseController
那么在 config/initializers/active_admin.rb
:
ActiveAdmin::BaseController.class_eval do
include JsonLog
end