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

How to define a before_action callback in application controller only for devise_controllers and activeadmin controllers?

我需要在我的应用程序控制器中为 activeadmin 和设计控制器实现一个 before_action 回调。对于设计控制器,我可以做类似的事情:

before_action :some_callback, if: :devise_controller?

我如何为 activeadmin 控制器做同样的事情?我试着做一个像这样的方法:

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

但它不起作用。关于如何达到预期结果的任何想法?先谢谢了。

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

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