2012-04-16 12 views
0

私は、ユーザーが自分のプロファイルを見ることができるようにしたいが、他のユーザーは誰も見ることができないようにしたい。私はこれがうまくいくと思いましたが、そうではありません。ユーザー認証:正しいユーザーを判断するためのRuby構文を修正しますか?

def show 
    if current_user 
     if current_user.id != User.find(params[:id]) 
     @user = User.find(params[:id]) 
     @title = @user.name 
     end if 
    else 
     redirect_to root_path 
    end 
    end 

私は間違っていると思いますか?あなたが代わりにUserクラスに1つのIDを比較しようとしているのid Sを比較したい

答えて

1

@user = User.find(params[:id]) 
if current_user.id == @user.id 
    @title = @user.name 
end 

しかし、あなたの最善の策は、実際にCanCanショットのようなものを与えるかもしれません。権限関連の作業を大幅に簡素化できます!

+0

ありがとうございます! CanCanをチェックアウトします。 –

1

あなたはほとんどそこにいます。これに変更する必要があります。 user.idは、ユーザーオブジェクトと等しい場合は、基本的に求めているので、

def show 
    if current_user != User.find(params[:id]) 
     @user = User.find(params[:id]) 
     @title = @user.name 
    else 
     redirect_to root_path 
    end 
    end 

あなたは動作しません何をしているか理由はあります。 current_userオブジェクトがUser.find(id)と等しいかどうかを確認する必要があります。これはUserオブジェクトを返すためです。希望が役立ちます。

関連する問題