2017-08-18 8 views
0

RoRの新機能ですが、ActiveRecord :: RecordNotFoundをhttp 404エラーにマップできることはわかっています。 Ruby上に他のリソースがありますか? ResourceName :: ResourceNameNotFoundRuby on Railsでリソースが見つかりません

また、RoRによって発生したエラーは、520,403,401に相当しますか?

ご協力いただければ幸いです。

+1

、それに対処するいくつかのスレッドがあります。http://blog.siami.fr/diving-in-rails-exceptions-handlingまたはこの1つhttps://medium.com/rails-ember-beyond/error-handling-in-rails-the-modular-way-9afcddd2fe1b私は本当に件名に精通していないので、私は本当に1つを推奨することはできませんがifあなたは良い概観を持っているいくつかを読んで – Maxence

答えて

1

Railsは、HTTPプロトコルの規約に関連して、適切なHTTPエラーコードで応答する必要があります。私はしばらくの間、Railsを使ってきましたが、例外はありませんでした。また、このコードは、レールも404

になります定義されていないルートを要求する404 で応答するようになります。この

@record = ModelName.find_by(field_name_goes_here: params[:some_parameter_name_goes_here]) 
    if not @record.blank? 
     render "view_file_name_goes_here" 
    else 
     raise ActiveRecord::RecordNotFound 
    end 

のように、独自の例外を発生させることができますその他の例:

あなたが考案または認可のための他のいくつかの宝石を使用している場合は500

で応答しますあなたのコードの構文エラーは、不正な要求が存在しないであろう401のレンダリングになりますどんな401をボックスの外にレンダリングするRailsのヒンジ。すべてのリクエストはroutes.rbで定義されていることを覚えておいてください。レンダリングするレスポンスとそのレスポンスがHTTPエラーコードを返すかどうかは、コントローラが決定します。

この質問ここでは、エラーコードのすべてのタイプをレンダリングする方法についての情報を提供しています。

Return a specific http status code in Rails

あなたはHTTPエラーコードをデバッグするために探しているなら、私はすべての要求を検討するために、レールの環境設定を設定することをお勧めローカル要求として。これはわかりやすいエラーを表示します。あなたはActiveRecord::RecordNotFound言及し、各エラーのようなその意味を持っているようなあなたの特定の結果が不一致 いるときにエラーを発生させることができ、レールに

Purpose of "consider_all_requests_local" in config/environments/development.rb?

+0

詳細な説明をありがとう。しかし、私の質問は、エラーによってレールが500,403、および401で応答する原因になりました。あなたの答えで言いましたように、ActiveRecord :: RecordNotFoundは、レールが404で応答する原因になり、レールがエラーコードI言及しましたか? –

+0

私は自分の答えを編集しました。私はこれが役立つことを願っています –

0

401 is for NOT_AUTHORIZED 
403 is for FORBIDDEN 
500 is for server error 

とがある他の多くの

これは、例外処理と呼ばれる
関連する問題