2016-04-11 12 views
1

私はJson REST-Apiを提供するためのRailsアプリケーションを持っています。"エラー"を捕らえる方法: "未定義メソッド` [] 'for nil: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 

、私は別のレコードにDBを複数回照会ところ、これらのようなステートメントを持っている:私のApplicationControllerには、私は様々なエラーをキャッチするためにこれらの行を持っています。

@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") 

Iが特定のアクションを打つコントローラへの呼び出しを行う場合、私は、任意のデータベース・オブジェクトにリンクされていない要求されたパラメータの

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

ヘッダとレスポンスボディを取得します。 これらのファイルをどのようにキャッチすればいいですか?見つからなかったレコードをどうやって追加するには?あなた、

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

しかし、あなたが自分で処理する必要があるエラーのこのタイプの-讲义1コースはじめてキャプチャする必要がありますが、あなたがエラーを解決する必要があります

答えて

0

おそらくNameErrorクラスまたはより一般的にはStandardErrorをキャプチャこの種のエラーをスローすることは想定されていないアプリケーションは、アクセスする前にデータが存在するかどうかをチェックします。

関連する問題