get_by_id_or_404 on railsとして関数を使用することは可能ですか? exempleのために、私が使用する私のコントローラで:idが設定されていないか、先が見つからない場合はRailsでモデルまたは404を取得
@destination = Destination.find_by_id(params[:id])
、どのように私は、404ページにリダイレクトするようにレールを求めることができますか?
ありがとうございました!
get_by_id_or_404 on railsとして関数を使用することは可能ですか? exempleのために、私が使用する私のコントローラで:idが設定されていないか、先が見つからない場合はRailsでモデルまたは404を取得
@destination = Destination.find_by_id(params[:id])
、どのように私は、404ページにリダイレクトするようにレールを求めることができますか?
ありがとうございました!
を、Railsは自動的に404エラーページをレンダリングすることでActiveRecord::RecordNotFound
例外を救います。
結果が見つからない場合は、ActiveRecord::RecordNotFound
を呼び出すファインダーのbangバージョンを使用してください。
@destination = Destination.find_by_id!(params[:id])
ただし、find_by
メソッドを使用する理由はありません。単にfind
にフォールバックするだけです。
私は生産で、それはエラーが発生し、404 OUに500
が表示されます。これは、the guideからだと思う:
あなたは感嘆符を指定することができるの終わりに(!)彼らはClient.find_by_nameのように、すべてのレコードを返さない場合は、動的ファインダは、彼らがActiveRecordの:: RecordNotFoundエラーを高めるために取得する!(「ライアン」)
をこれが発生した場合、Railsはあなたのための404ページをレンダリングします。また、単にfind_by_id
ためのショートカットとしてfind
を使用する:プロダクションモードで
@destination = Destination.find!(params[:id])
感嘆符は不要です! [docsには 'find'](http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find)をチェックすると、IDを渡すとRecordNotFoundが発生します。 – molf
findはfind_by_idのショートカットです! –
finderメソッドを変更しない限り、そのメソッドは例外を生成しません。 –