我已经实现了自定义错误处理,并使用这一行来解决错误:
rescue_from Exception,
:with => :render_error
但是,这也是从 CanCan::AccessDenied 中拯救出来的,我怎样才能对这条规则做出例外来拯救 'CanCan::AccessDenied' 并发送到根路径并使用自定义方法 ':render error' 拯救一切?
我已经实现了自定义错误处理,并使用这一行来解决错误:
rescue_from Exception,
:with => :render_error
但是,这也是从 CanCan::AccessDenied 中拯救出来的,我怎样才能对这条规则做出例外来拯救 'CanCan::AccessDenied' 并发送到根路径并使用自定义方法 ':render error' 拯救一切?
直接引用源代码,
处理程序是继承的。从右到左,从下到上,向上搜索它们。exception.is_a?(klass) 为真的第一个类的处理程序是被调用的处理程序,如果有的话。
所以,你可以简单地这样做:
rescue_from CanCan::AccessDenied, :with => :your_custom_handler
rescue_from Exception, :with => :render_error
请记住,rescue_from 调用的顺序很重要。