1
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 deviseを使った論理削除と、垢BANさせる機能と復活させる機能

Posted at

管理者側で、会員ステータスを思うがままにする

論理削除で退会したユーザーのデータは残っています。なので、退会したユーザーを復活させることが可能。

チーム開発で管理者権限で垢BANさせる機能の実装ができなかったので、ポートフォリオで実装してみました。そして、復活させることもできます。神ですね。

前提

  • deviseで、管理者側と、会員側のpublicで分けて実装している。
  • データベースにbooleanのデータ型で、default: falseの会員ステータスを作成している。
  • public(user)側で退会機能を実装してある。

routes.rb

  namespace :admin do
  :
  :
  ユーザーを退会させる :idでユーザーのIDが取得できる。
  patch "withdrawal/:id" => "users#withdrawal", as: "withdrawal"
  end

controllers/admin/users_controller.rb

 既に実装してあるpublic側から退会アクションメソッドをコピペしてきて修正。

 def withdrawal
     @user = User.find(params[:id])
           #!をつけて、true/falseを反転させて、有効、退会を切り替えることができる。
     @user.update(is_deleted: !@user.is_deleted)
 
        if @user.is_deleted
           flash[:notice] = "退会処理を実行いたしました"
        else
           flash[:notice] = "有効にします"
        end
           redirect_to admin_root_path
    
  end

views/admin/users/show.html.erb

<th>会員ステータス</th>
    <td>
        <% if @user.is_deleted %>
          退会済み
<%= link_to "有効にする", admin_withdrawal_path(@user.id), method: :patch, class: "btn btn-success" %>
        <% else %>
          有効
<%= link_to "退会させる", admin_withdrawal_path(@user.id), method: :patch, class: "btn btn-danger" %>
        <% end %>
      </td>

こんな感じで、実装できた。やったね。
boolean型は == などを省略できる。演算子の!をつけることで。真偽値を返してくる。
なので、同じアクション内で簡潔に書くことができた。

数学苦手なので、演算子などの理解がまだ難しい。

1
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
1
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?