應該是一個簡單的問題,但在SO它我無法找到任何東西,所以我只是扔雷在那裏:Ruby on Rails的「查找」和它的返回值
thing_i_use = Thing.find(params[:id])
因爲它代表,在沒有使用參數無事活動[:編號],該網站默認爲與堆棧跟蹤等開發頁面,聲稱沒有與ID沒有東西=等。
我想知道的是如何測試這樣的事情,如果params [:id]不存在,或者是對象本身,thing_i_use就是nil。基本上,使用對象的不存在在我的邏輯稍後在代碼。
應該是一個簡單的問題,但在SO它我無法找到任何東西,所以我只是扔雷在那裏:Ruby on Rails的「查找」和它的返回值
thing_i_use = Thing.find(params[:id])
因爲它代表,在沒有使用參數無事活動[:編號],該網站默認爲與堆棧跟蹤等開發頁面,聲稱沒有與ID沒有東西=等。
我想知道的是如何測試這樣的事情,如果params [:id]不存在,或者是對象本身,thing_i_use就是nil。基本上,使用對象的不存在在我的邏輯稍後在代碼。
替換:
thing_i_use = Thing.find(params[:id])
有了:
thing_i_use = Thing.find_by_id(params[:id])
最新如果id
不存在或爲nil
不會吐出任何錯誤。
thing_i_use
只會是nil
,這將是唯一的測試。
thing_i_use = Thing.find(params[:id]) rescue nil
1)'救援nil'is衆所周知的抗圖案2)'rescue'costs性能 – apneadiving 2011-06-14 23:23:55
如果你想nil
返回如果與該ID的對象不存在,你可以使用:
thing = Thing.find_by_id(params[:id])
如果你想測試,如果它存在(並獲得真/假):
Thing.exists?(params[:id])
像魅力的一個。感謝humoring我的回報率newbiness。現在要弄清楚它的其餘部分。 – 2011-06-14 23:31:26