13
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-09-12

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

#論理削除とは
削除方法には、物理削除と論理削除があります。
物理削除は、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

13
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?