#初めに
簡単に論理削除を導入出来ましたので、初学者、論理削除を導入したい方向けにメモを残します。
#論理削除とは
削除方法には、物理削除と論理削除があります。
物理削除は、DB内からデータを削除します。
論理削除は、対象のデータに削除されたという印(フラッグ)を付け、ユーザ側からは削除された様に見えます。
論理削除の利点は、いつでもデータを復元できる事です。
#開発環境
・ruby-2.5.5
・Rails 5.2.3
導入済みgem
・devise
#導入方法
今回はユーザ退会に対する論理削除の為、gem:devise
を導入済みである事を前提としています。
##gemの導入
gem 'paranoia'
gem追加出来たら、**bundle install
**して下さい。
##カラム追加
Usersテーブルにdeleted_at
と言うカラムを追加します。
$ rails g migration AddDeletedAtToUsers deleted_at:datetime
すると、以下の様なマイグレーションファイルが生成されると思います。
class AddDeletedAtToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :deleted_at, :datetime
end
end
正しければ、**$ rails db:migrate
**して下さい。
##モデルの編集
acts_as_paranoid #これを追加
以上で、paranoiaの導入、設定は終わりです。
#動作テスト(コンソール)
$ rails c #コンソール起動
> user = User.find(1)
> user.destroy #削除コマンド
再び、user = User.find(1)
をしても、ユーザは見つからないと思います。
※物理削除をしたい場合は、user.really_destroy!
#削除データの確認
> User.only_deleted
#削除データの復元
> user.restore