Help us understand the problem. What is going on with this article?

論理削除を簡単に導入!  (Rails)

初めに

簡単に論理削除を導入出来ましたので、初学者、論理削除を導入したい方向けにメモを残します。

論理削除とは

削除方法には、物理削除と論理削除があります。
物理削除は、DB内からデータを削除します。
論理削除は、対象のデータに削除されたという印(フラッグ)を付け、ユーザ側からは削除された様に見えます。
論理削除の利点は、いつでもデータを復元できる事です。

開発環境

・ruby-2.5.5
・Rails 5.2.3

導入済みgem
・devise

導入方法

今回はユーザ退会に対する論理削除の為、gem:deviseを導入済みである事を前提としています。

gemの導入

Gemfile
gem 'paranoia'

gem追加出来たら、bundle installして下さい。

カラム追加

Usersテーブルにdeleted_atと言うカラムを追加します。

$ rails g migration AddDeletedAtToUsers deleted_at:datetime

すると、以下の様なマイグレーションファイルが生成されると思います。

xxxxxxxxx_add_deleted_to_users
class AddDeletedAtToUsers < ActiveRecord::Migration[5.1]
  def change
    add_column :users, :deleted_at, :datetime
  end
end

正しければ、$ rails db:migrateして下さい。

モデルの編集

user.rb
acts_as_paranoid #これを追加

以上で、paranoiaの導入、設定は終わりです。

動作テスト(コンソール)

$ rails c #コンソール起動

> user = User.find(1)
> user.destroy #削除コマンド

再び、user = User.find(1)をしても、ユーザは見つからないと思います。
※物理削除をしたい場合は、user.really_destroy!

削除データの確認

> User.only_deleted

削除データの復元

> user.restore

参考資料

【Rails】paranoiaで論理削除を実装する
paranoiaのgithub

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away