Railsで論理削除を実装したい時は「paranoia」Gemを使おう!
はじめに
このデータ(レコード)要らないと思って削除したはいいが、あとで戻したいなんてことありますよね?
Railsチュートリアル等を見ると、destroyメソッドでレコードを物理削除したりしていますが、
完全に消すのは怖いという場合、論理削除をすることをおすすめします。
「paranoia」というGemを使用するとこれが簡単に実装できてしまいます!
それでは見ていきましょう!
1. Gemをインストール
Gemfileに以下を追記する
gem 'paranoia'
bundle installする
2. 論理削除用のカラムを追加
migrationファイルの作成
※ 以下では、migrationファイルを生成するときにカラム名と型を指定しています。
rails g migration add_column_to_テーブル名 deleted_at:datetime
migrationを行う
rails db:migrate
3. モデルに独自のメソッドを追記
class Post < ApplicationRecord acts_as_paranoid end
終わりに
これでdestroyメソッドで削除しようとすると、先ほど追加した「deleted_at」に日時が入り、物理的にレコードは削除されません。
※ 本当に物理削除したい場合は、「really_destroy」メソッドを使用すると物理削除をすることができます。
めちゃくちゃ簡単でしたね!
本当にRailsのGemは豊富で実装が簡単です!