Railsアプリでモデルにparanoiaというgemを使って論理削除を実装してみます。論理削除は、物理削除と違って、削除してもデータベースにはデータが残っている状態で、復活させることもできます。
paranoiaの導入
Gemfileにparanoiaを追記してbundle installします。
gem "paranoia"
論理削除用のカラムの追加
対象のモデルに論理削除に使うカラムを追加します。
rails g migration AddDeletedAtToUsers deleted_at:datetime
そして、rails db:migrateします。
対象モデルにacts_as_paranoidを追記
対象のモデルにacts_as_paranoidを追記します。
class User < ApplicationRecord acts_as_paranoid end
これで実装完了です。
論理削除を確認する
コンソール(rails c)で論理削除が実装できているかを確認してみます。
user = User.find(1) user.destroy
でid=1のユーザーを削除してから、userを確認すると、deleted_atに日付が入ります。
論理削除から復活させるときは
User.restore(1)
で復活します。
Ruby on Railsをこれから本格的に勉強したい人は「エンジニアになるための600時間のプログラミング学習に耐え抜くコツ」という記事がおすすめです。