我正在尝试构建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
您的代码将无法正常工作,并会引发异常,你应该做的:
@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])
那么你的测试是正确的
你也可以用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