0
0

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 1 year has passed since last update.

【Rails】退会機能実装(論理削除)

Posted at

はじめに

deviseを使用して退会機能(論理削除)の実装について
アウトプットします!

論理削除とは?

データベースのレコードを非表示にして削除されてないけど
削除されているのと同じ扱いにすること。

メリット

  • レコードが残っているのでデータの復旧が可能
  • 削除されたレコードの履歴を残せるのでデータの検索が出来る

デメリット

  • データ量増大によりストレージが圧迫される

物理削除とは?

データベースのテーブルから対象のレコードを物理的に削除すること

メリット

  • レコードが削除されるのでストレージが圧迫されにくい
  • 管理がしやすい

デメリット

  • データの復旧が容易ではない
  • 削除さえたデータの参照ができない

カラムの追加

ターミナル
$ rails g migration AddIsValidToUsers is_deleted:boolean

このカラムにデフォルト値(false)を設定する。

schema.rb
t.boolean "is_deleted", default: false

booleanを使用することにより、ture、falseで退会しているかどうかを判断します。
初期値をfalseに設定しますので、退会済みの場合はtrueとなります。

ルーティング

routes.rb
get "/out" => "parents#out"
patch "/withdraw" => "parents#withdraw"

controllerの編集

XXX_controller.rb
  def withdraw
    @user = current_user
    @user.update(is_deleted: true)
    reset_session
    redirect_to root_path
  end

viewの編集

app/views/parents/out.html.erb
<div>
  <h2>本当に退会しますか</h2>
  <div>
    <p>退会する場合は、『退会するをクリックしてください</p>
  </div>
  <div>
    <%= link_to '退会しない', mypage_path(@user) %>
    <%= link_to "退会する", withdraw_user_path(@user), method: :patch %>
  </div>
</div>

まとめ

今回は論理削除にて退会機能を実装しましたが、サービスによって
実装方法の検討をする必要性を感じました!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?