コピペコードで快適生活

明日使えるソースを自分のために

cancancanでActiveRecord::RecordNotFoundを出したくないときのパッチ

module MyApp
  module CanCan
    module ControllerResourcePatch
      def find_resource
        # もともと定義してあるfind_resourceを呼び出す
        super
      rescue ActiveRecord::RecordNotFound => e
        # エラーさせたくないので握りつぶす
      end
    end
  end
end

CanCan::ControllerResource.prepend MyApp::CanCan::ControllerResourcePatch

書き換え元のメソッドはこちら。
https://github.com/CanCanCommunity/cancancan/blob/1.5.0/lib/cancan/controller_resource.rb#L98
たぶんバージョン違うときは、違うclassのメソッド書き換えが必要。