Railsアプリでgem paranoiaを使った論理削除の方法

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)

で復活します。

参考:【Rails】paranoiaで論理削除を実装する

Ruby on Railsをこれから本格的に勉強したい人は「エンジニアになるための600時間のプログラミング学習に耐え抜くコツ」という記事がおすすめです。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする