1

我正在尝试构建一个 Rails 3.2 应用程序,但在进行破坏时我有一个简单的问题。首先,我进行查找以找到我需要删除的用户,但如果找不到,我不想进行销毁。

这是我的代码,我觉得第 3 行缺少某些内容(如果@user):

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

 if @user
  @user.destroy
 else
  "User not found"
 end
4

3 回答 3

3

你也可以这样做try

if User.find_by_id(params[:user_id]).try(:destroy)
  "User found and destroyed"
else
  "User not found or was not successfully destroyed"
end
于 2012-07-31T19:12:19.797 回答
2

您的代码将不起作用并引发异常,您应该这样做:

 @user = User.find_by_id(params[:user_id])

 if @user
   @user.destroy! #methods with bang raise an exception, I advise you to use them
   #no flash msg?
 else
   flash[:error] = "User not found"
 end
于 2012-07-31T19:07:47.460 回答
0

如果找不到用户,您会得到一个异常

如果您不想要它,请执行以下操作:

@user = User.find_by_id(params[:user_id])

那么你的测试是正确的

于 2012-07-31T19:09:26.617 回答