如何在应用程序控制器中仅为 devise_controllers 和 activeadmin 控制器定义 before_action 回调?

问题描述 投票:0回答:2

我需要在我的应用程序控制器中实现

before_action
回调,仅适用于 activeadmin 和 devise 控制器。对于设备控制器我可以这样做:

before_action :some_callback, if: :devise_controller?

如何对 activeadmin 控制器执行相同操作?我尝试制定如下方法:

def active_admin_controller?
 if params[:controller] =~ /^admin\//i
   true
 end
end

但它不起作用。关于如何达到预期结果有什么想法吗?先谢谢了。

ruby-on-rails callback activeadmin
2个回答
2
投票

我找到了解决方案,只需将条件放入数组中即可:

before_action :some_callback, unless: [:devise_controller?, :active_admin_controller?]

另外,改变了

active_admin_controller?
方法:

def active_admin_controller?
  if request.filtered_parameters['controller'] =~ /^admin\//i
    true
  else
    false
  end
end

0
投票

对我有用的解决方案是使用

config.skip_*

# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
  # ...
  config.before_action :some_callback
end
© www.soinside.com 2019 - 2024. All rights reserved.