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])
それならあなたのテストは正しいです