我正在嘗試構建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