rails チュートリアル 第10章 rails 5.0.0の質問です。
10.4.2 destroyアクション にてdestroyアクションを追加する箇所です。
https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.0#sec-deleting_users
<以下本文>
Usersリソースの最後の仕上げとして、destroyアクションへのリンクを追加しましょう。まず、ユーザーindexページの各ユーザーに削除用のリンクを追加し、続いて管理ユーザーへのアクセスを制限します。これによって、現在のユーザーが管理者のときに限り [delete] リンクが表示されるようになります (リスト 10.57)。
<li> <%= gravatar_for user, size: 50 %> <%= link_to user.name, user %> <% if current_user.admin? && !current_user?(user) %> | <%= link_to "delete", user, method: :delete, data: { confirm: "You sure?" } %> <% end %> </li>
上記if文にて、current_user.admin?でログインしているユーザーが管理者権限を持っている場合にのみ削除できるようにするのはわかるのですが、!current_user?(user)
が必要な理由がわかりません。
current_user!は
sessions_helperにて
# 渡されたユーザーがログイン済みユーザーであればtrueを返す def current_user?(user) user == current_user end
メソッドですが、各ユーザーがログインしているユーザー(つまり自分)ではない場合に削除できるようにする、ということにるのでしょうか?