在我的控制器控制器中,我使用Date.new
創建一個要在我的ActiveRecord中傳遞的日期對象。提高ActiveRecord :: RecordNotFound(或任何404狀態)的無效日期
end_range = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i).end_of_day.to_formatted_s(:db)
與此上面的問題是,如果用戶嘗試手動更改在URL中的參數,諸如進入40
一天PARAM,所述Date.new
失敗(如預期)。但是,如果用戶輸入類似的內容,我寧願不會出現500錯誤,而是出現404錯誤(因爲您實際上永遠無法在一天內執行40
記錄)。
我嘗試過各種條件語句(if
和unless
語句),以raise ActiveRecord::RecordNotFound
如果失敗了,但它在運行條件(和爲此從未返回404)之前,將返回500錯誤。
有沒有人知道更好的方法來處理該問題,或者讓Date.new
更優雅地失敗以便條件語句可以運行的方法?
謝謝,這工作。第二個例子效果很好,這正是我想要的,但我開始試圖通過一個ActiveRecord NotFound來獲取500以外的內容。(如果有人讀到這個,ActiveRecord在第一個例子中是錯誤的。) – 2010-08-04 20:17:53
Fixed錯字。很高興爲你工作。 – tadman 2010-08-04 20:54:18