管理者側で、会員ステータスを思うがままにする
論理削除で退会したユーザーのデータは残っています。なので、退会したユーザーを復活させることが可能。
チーム開発で管理者権限で垢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型は == などを省略できる。演算子の!をつけることで。真偽値を返してくる。
なので、同じアクション内で簡潔に書くことができた。
数学苦手なので、演算子などの理解がまだ難しい。