0
0

More than 3 years have passed since last update.

退会したユーザーの表示を変える

Posted at

現在投稿系のアプリを作っていて退会したユーザーの扱いどうしようかなーと考えていたら、teratailなどのサービスで「退会済みユーザー」のような表記になっているのを見受けました

直感的に見てもわかりやすいし実装もしやすそうだなと思ったのでこれで行こうと思います。

実装

まず退会機能なんですが、完全にデータを削除といったことはせずに退会したことにするといった
論理削除といった状態にするといいといろんな記事に書いてありました。

論理削除の概要については下記記事がわかりやすかったので参考させていただきました

情報提供を依頼されたりするときにすぐに出せるようにするみたいなこともあるみたいですね。
誹謗中傷とか犯罪予告とか

まあ僕の場合は投稿系なので100件投稿してくださったユーザーが退会した時にそれを全部削除するってなったら中身がスカスカになりそうだと思ったんで退会した場合はユーザーネームを
退会済みユーザーみたいな表記に変えてコメントや投稿を残すことにしました

まずは退会の扱いですが、users,テーブルにis_deletedとかdeleted_flagみたいなカラムを持たせてboolean型で追加します

maigration
class AddIsDeletedToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :is_deleted, :boolean, default: false, null: false
  end
end

add_column (追加したいテーブル), (カラム名), (データ型), null:falseなどの制約

デフォルトをfalseにすることで退会処理が実行された時にtrueになり、このユーザーは退会したユーザーとして扱えます。

view
) <% if @user.is_deleted == false %> *is_deletedがfalseなので退会していないことになる
     <%= @user.username %>
   <% else %>    *elseis_deleted == trueの場合、つまり退会した場合の表示にする*
     退会済みユーザー
   <% end %>

もっと適切な使い方があるのだと思いますが、僕はこれが精一杯でした。。
こんな感じで投稿やコメントは残したまま退会ユーザーとして扱えます。

結構穴がある実装だと思います。
正直これ以外でつかえる場面が思いつかないのでこれでいいか不安ですがとりあえず現状は問題ないのでこのまま行きます。
退会したら30日間は同じメールアドレスで登録できないみたいな感じの動作が理想なのでしょうが、データが変わるのはis_deletedだけなので他のカラム(username,email,password)達は残っているので退会したら同じメールアドレスでログインすることが2度とできなくなるっぽいです
まあデータが残ったままですからね

自分でも調べますが、こんなん良いよみたいな案がありましたらコメントで教えていただけると幸いです。

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