0

我的应用程序中用户的 URL 如下:

localhost:3000/users/1/dashboard

当有人手动user ID将 URL 中的 更改为没有分配用户的数字时,它给了我错误:

Couldn't find User with id=X.

有没有办法将用户返回到其他地方?

我在 user_controller.rb 中尝试过这样的事情:

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

unless @user
  redirect_to root_path
end
4

2 回答 2

3

是的,例如:

def dashboard
  begin
    @user = User.find(params[:id])
  rescue ActiveRecord::RecordNotFound
    redirect_to root_path
  end
end

如果 ActiveRecord 找不到记录,它会引发异常,这就是为什么你unless @user ...是徒劳的。

于 2013-05-27T19:54:51.237 回答
1

另一种不需要 resque 的方法是使用 find_by_id,如果没有找到记录则返回 nil:

def dashboard
  @user = User.find_by_id params[:id]
  redirect_to root_path unless @user
end
于 2013-05-27T21:07:23.040 回答