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

py49o6xq  于 2023-10-21  发布在  Ruby
关注(0)|答案(2)|浏览(130)

我需要在我的应用程序控制器中实现一个before_action回调,仅用于activeadmin和devise控制器。对于devise控制器,我可以这样做:

before_action :some_callback, if: :devise_controller?

如何对activeadmin控制器执行相同的操作?我尝试了一个方法,比如:

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

但它不起作用有什么办法可以达到预期的效果吗?先谢了。

6psbrbz9

6psbrbz91#

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

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
zmeyuzjn

zmeyuzjn2#

一个适合我的解决方案是使用config.skip_*

# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
  # ...
  config.before_action :some_callback
end

相关问题