我正在尝试构建一个 Rails 3.2 应用程序,但在进行破坏时我有一个简单的问题。首先,我进行查找以找到我需要删除的用户,但如果找不到,我不想进行销毁。
这是我的代码,我觉得第 3 行缺少某些内容(如果@user):
@user = User.find(params[:user_id])
if @user
@user.destroy
else
"User not found"
end
我正在尝试构建一个 Rails 3.2 应用程序,但在进行破坏时我有一个简单的问题。首先,我进行查找以找到我需要删除的用户,但如果找不到,我不想进行销毁。
这是我的代码,我觉得第 3 行缺少某些内容(如果@user):
@user = User.find(params[:user_id])
if @user
@user.destroy
else
"User not found"
end
你也可以这样做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
您的代码将不起作用并引发异常,您应该这样做:
@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
如果找不到用户,您会得到一个异常
如果您不想要它,请执行以下操作:
@user = User.find_by_id(params[:user_id])
那么你的测试是正确的