を管理しているときに、ユーザーの編集ページにアクセスし、自分のユーザーコントローラの私の編集アクションはとても似ている:私は自分のユーザープロファイルにアクセスする場合は、現在
def edit
@user = User.find(params[:id])
end
これは動作します。しかし、他のユーザーのユーザープロフィールにアクセスしたい場合、これは機能しません。これをどのように変更する必要がありますか?
を管理しているときに、ユーザーの編集ページにアクセスし、自分のユーザーコントローラの私の編集アクションはとても似ている:私は自分のユーザープロファイルにアクセスする場合は、現在
def edit
@user = User.find(params[:id])
end
これは動作します。しかし、他のユーザーのユーザープロフィールにアクセスしたい場合、これは機能しません。これをどのように変更する必要がありますか?
現在のユーザーが自分のプロファイルにアクセスしようとしているかどうかを確認する前にアクションcheck_right_user
を追加します。
before_action :check_admin, only: [:edit, :update, :destroy]
def check_admin
unless current_user.admin?
redirect_to root_path, alert: "You're not authorized"
end
end
私はあなたのuser
モデルであなたのapplication_controller
またはusers_controller
とadmin
フィールドで定義current_user
方法を持っていると仮定します。
私の悪い。問題は、管理者が他のユーザーの編集操作にアクセスできるようにすることです。 – nachime
@nachimeが更新されました。これは、あなたの望むことですか? –
「他のユーザーのユーザープロフィールにアクセスしたい場合、これはうまくいかないでしょう。 '/ users/1/edit' =ユーザー1を編集します。あなたが望むのは、編集者を非管理者*が編集できないように編集をロックすることです。 – coreyward
うわー、なぜ私はそれを考えたのかわかりません。 – nachime