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

时间:2017-12-05 12:56:37

标签: ruby-on-rails callback activeadmin

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

before_action :some_callback, if: :devise_controller?

如何为activeadmin控制器执行相同的操作?我试图制作一个方法:

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

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

1 个答案:

答案 0 :(得分: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