我想确保用户可以看到他们的个人资料,但没有其他人。我认为这会奏效,但事实并非如此。
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
知道我做错了吗?
答案 0 :(得分:1)
您希望比较id
而不是尝试将一个ID与User
类进行比较:
@user = User.find(params[:id])
if current_user.id == @user.id
@title = @user.name
end
但你最好的选择可能就是给出像CanCan这样的东西。它可以大大简化与权限相关的任务!
答案 1 :(得分: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对象。希望有所帮助。