0

我想确保用户可以看到他们的个人资料,但看不到其他人的个人资料。我认为这会起作用,但事实并非如此。

  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

您想比较ids 而不是尝试将一个 id 与一个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 是否等于用户对象。您应该询问 current_user 对象是否等于 User.find(id),因为这将返回一个 User 对象。希望有帮助。

于 2012-04-16T01:04:55.960 回答