1

カスタム エラー処理を実装し、次の行を使用してエラーから救出しました。

rescue_from Exception,
  :with => :render_error

ただし、これは CanCan::AccessDenied からのレスキューでもあります。「CanCan::AccessDenied」をレスキューし、ルート パスに送信して、カスタム メソッド「:render error」ですべてをレスキューするために、このルールの例外を作成するにはどうすればよいですか?

4

1 に答える 1

0

ソースから直接引用すると、

ハンドラーは継承されます。それらは、右から左、下から上、そして階層の上に向かって検索されます。exception.is_a?(klass) が true を保持する最初のクラスのハンドラーが呼び出されます (存在する場合)。

したがって、これを簡単に行うことができます:

rescue_from CanCan::AccessDenied, :with => :your_custom_handler
rescue_from Exception, :with => :render_error

rescue_from 呼び出しの順序が重要であることに注意してください。

于 2013-11-20T07:43:54.060 に答える