2016-04-11 48 views
1

我有一個Rails應用程序提供JSON REST-Api。在我的ApplicationController中,我有這些線路捕捉各種錯誤:如何捕捉「錯誤」:「未定義的方法`[''爲零:NilClass」

rescue_from ActiveRecord::RecordNotFound,  with: :_404 
rescue_from ActiveRecord::RecordInvalid, with: :_400 
rescue_from ActiveRecord::RecordNotUnique, with: :_406 
.... 
def _404(exception) 
     Rails.logger.error "head 404 with params #{params}" 
     render status: 404, :json => {:error => exception.message} 
end 

在我的控制器之一,我有一個像那些我查詢數據庫多次爲不同的記錄的聲明。

@account = Account.find_by_phone(params[:phone]) 
@controller = Controller.find_by_controller_id(params[:role_id]) 
@batlockers_rel = Batlocker.includes(:customer).where("customer_id is not null") 

當我撥打電話到控制器打到具體行動,給我的報頭和響應主體

HTTP/1.1 501 NOT IMPLEMENTED 
{"error":"undefined method `[]' for nil:NilClass"} 

對於不鏈接到任何數據庫對象所要求的參數。 如何捕獲這些NilErrors,然後如何包含未找到的記錄?

回答

0

可能捕捉NameError類或者更一般StandardError的:

rescue_from ::NameError, with: :_whatever 
rescue_from StandardError, with: :_whatever 

但這種類型的錯誤,你需要自己處理的,五言,你需要捕獲的第一次,但你應該解決的錯誤,你的應用程序不應該拋出這種錯誤,檢查訪問元素之前數據是否存在。

相關問題