2016-08-22 6 views
0

を管理しているときに、ユーザーの編集ページにアクセスし、自分のユーザーコントローラの私の編集アクションはとても似ている:私は自分のユーザープロファイルにアクセスする場合は、現在

def edit 
    @user = User.find(params[:id]) 
    end 

これは動作します。しかし、他のユーザーのユーザープロフィールにアクセスしたい場合、これは機能しません。これをどのように変更する必要がありますか?

+0

「他のユーザーのユーザープロフィールにアクセスしたい場合、これはうまくいかないでしょう。 '/ users/1/edit' =ユーザー1を編集します。あなたが望むのは、編集者を非管理者*が編集できないように編集をロックすることです。 – coreyward

+0

うわー、なぜ私はそれを考えたのかわかりません。 – nachime

答えて

1

現在のユーザーが自分のプロファイルにアクセスしようとしているかどうかを確認する前にアクション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_controlleradminフィールドで定義current_user方法を持っていると仮定します。

+0

私の悪い。問題は、管理者が他のユーザーの編集操作にアクセスできるようにすることです。 – nachime

+0

@nachimeが更新されました。これは、あなたの望むことですか? –