レコードをソフト削除すると、コントローラーのアクションでそれを呼び出すことができません。これはshow
、レコードの に一致するレコードを探すためですID WHERE deleted_at IS NULLL
。これは宝石の目的を考えると正しいですが、それでもできるようにしたいと思いますアプリケーション内で一種の「読み取り専用」状態でアクセスして、ユーザーがアーカイブを確認し、場合によっては復元できるようにします。
オブジェクトに再度アクセスできるように、削除スコープを回避するにはどうすればよいですか?
更新 1
@slowjack2k のアドバイスにより、次のクエリを使用してソフト削除されたレコードにアクセスできます。
@area = Area.only_deleted.find(params[:id])
その後、 CanCanCan が 原因で新しい問題が発生しましたload_and_authorize_resource
。
@area = Area.find(params[:id])
only_deletedフィルターを無視すると、選択した ID は deleted_at が null ではない (削除されていない) 場合にのみ見つかるため、エラーが発生し、承認を無効にすると「修正」されるため、CanCanCanとParanoiaの間の問題である必要があります。
これはまったく同じ問題のスレッドです: https://github.com/rubysherpas/paranoia/issues/356
これが StackOverflow の新しい問題のスレッドです: Paranoia と CanCanCan の間の Rails 5 の互換性、危うい?
解決策が見つかったら、もう一度更新します。ありがとうございます。
更新 2
問題は解決されました。解決策は、上記の新しい問題のスレッドで見つけることができます。