before_filter:除非&命名空间

时间:2014-02-20 00:15:15

标签: ruby-on-rails activeadmin

我正在尝试执行以下操作:

before_filter :authenticate_user!, :unless => (:devise_controller? || self.class.parent == 'admin')

devise_controller?有点工作(我想!)但我正在努力让它正确检测命名空间(我正在使用ActiveAdmin)。

有什么想法吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

我相信你必须在before_filter方法中使用proc。试试这样的事情

before_filter :authenticate_user!, :unless => Proc.new { devise_controller? || self.class.parent   == 'admin' }

对于一些代码,proc或lambda就足够了。如果它变得更复杂,则在方法my_conditions_method中提取条件并调用:unless => :my_conditions_method

答案 1 :(得分:0)

如上所述,我没有深究这一点,但通过这种方法找到了一个解决方案,通过更清晰的实现实现了相同的结果:

ActiveAdmin with Devise Rails login twice