0

ユーザーが自分の1つのプロファイルを表示できるようにしたいのですが、他のユーザーは表示できません。これでうまくいくと思いましたが、そうではありません。

  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

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

1

1 つの ID をクラスidと比較する代わりに、sを比較したい場合:User

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

しかし、あなたの最善の策は、実際にはCanCanのようなものを試すことかもしれません. 権限関連のタスクを大幅に簡素化できます。

于 2012-04-16T01:03:49.953 に答える
1

あなたはほとんどそこにいます。これに変更する必要があります。

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

あなたがやっていることがうまくいかない理由は、基本的に user.id がユーザーオブジェクトと等しいかどうかを尋ねているからです。user オブジェクトが返されるため、 current_user オブジェクトが User.find(id) と等しいかどうかを確認する必要があります。それが役立つことを願っています。

于 2012-04-16T01:04:55.960 に答える