たとえば、大きさ、寸法、型などのすべてのバリデーションを渡した画像がありますが、それを処理しなければならない時には、何か不明な理由でImageMagickがエラーをスローします...どうすればいいですかそれを処理する? Active Record Validations and Callbacks Guideからファイルbefore_saveの処理中にエラーが発生した場合、検証後に例外を発生させるか、falseを返してエラーを追加する必要がありますか?
4
A
答えて
12
:
任意の前にコールバックメソッドが正確
false
を返すか、例外が発生した場合は、実行チェーンは停止しますし、ROLLBACKが発行される[...]
したがって、例外バブルをActiveRecordに取り入れるか、自分でトラップすることができ、アプリケーションのコンテキスト内で意味のあるものに変換し、false
を返すことができます。このようなものが意味をなすかもしれないので、あなたはbefore_save
コールバック内のエラーを登録することができます。
before_save :do_magick_things
private
def do_magick_things
# ImageMagick stuff...
true
rescue ImageMagickError, FatalImageMagickError => e
errors.add(:base, 'Some sort of sensible version of e.message')
false
end
あなたは、トラップとdo_magick_things
のようにImageMagickの例外を(翻訳エンドユーザーに理にかなって何かにImageMagickのエラーを翻訳することができた場合おそらく最も理にかなっているだろう。例外をエラーメッセージに変換する場合は、例外が必要な場合はsave!
、使用しない場合はsave
を使用することもできます。
関連する問題
- 1. 未処理の例外が発生した場合は、WPFアプリケーションをシャットダウンする必要がありますか?
- 2. 例外の処理中に例外が発生しました
- 3. EnableClientValidation = falseの場合、DropdownListの検証エラーが発生する
- 4. エラー/例外が発生した場合の中断の問題?
- 5. Express.jsエラーを処理させない:例外が発生しました:エラー_runMicrotasks();
- 6. 例外処理中にエラーが発生しました--- InstanceID instanceID = InstanceID.getInstance(getApplication());
- 7. コンテキストメニューのクリックイベントを処理中にエラーが発生しました
- 8. JMS処理中にapachemq例外が発生しました
- 9. JSP処理中に例外が発生しましたwhileループ
- 10. Jsonリクエストを処理中にエラーが発生しました
- 11. DOMException:ICE候補を処理中にエラーが発生しました
- 12. テンプレートを処理中にエラーが発生しました "
- 13. この要求を処理するために必要なリソースのコンパイル中にエラーが発生しました
- 14. SWAGGERエラー。サーバーで要求の処理中にエラーが発生しました
- 15. VBAが検証リストにIF式を追加中にエラーが発生する
- 16. コードにPDOを追加中にエラーが発生しました
- 17. グリッドにアイテムを追加中にエラーが発生しました
- 18. セージテーマにカスタムウィジェットを追加中にエラーが発生しました
- 19. アプリケーションにカスタムテーマを追加中にエラーが発生しました
- 20. ページコンポーネントにContextHubを追加中にエラーが発生しました
- 21. データベースにカートアイテムを追加中にエラーが発生しました
- 22. codecovのカバレッジレポートの処理中にエラーが発生しました
- 23. Ejabberd - SQLクエリの処理中にエラーが発生しました
- 24. DataTablesサーバー側の処理中にエラーが発生しました
- 25. ajax jqueryの処理中にエラーが発生しました
- 26. xmlドキュメントの処理中にエラーが発生しました
- 27. PaperclipError、 "サムネイルの処理中にエラーが発生しました..."
- 28. Matlabの並列処理中にエラーが発生しました
- 29. Django UserProfileフォームの処理中にエラーが発生しました。
- 30. `keyup`イベントの処理中にエラーが発生しました
「before_save」にエラーを追加するのは「アンチパターン」ではありません。知っておいて、ありがとう。 – Zequez
@Zequez:私はそれがアンチパターンではないと思っています。あなたの 'before_save'をバリデーションに使用しないでください。 –
私は知っていますが、なんらかの理由でエラーオブジェクトが検証エラーのために使用されるべきであると感じています。 – Zequez