カスタム エラー処理を実装し、次の行を使用してエラーから救出しました。
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) が true を保持する最初のクラスのハンドラーが呼び出されます (存在する場合)。
したがって、これを簡単に行うことができます:
rescue_from CanCan::AccessDenied, :with => :your_custom_handler
rescue_from Exception, :with => :render_error
rescue_from 呼び出しの順序が重要であることに注意してください。