0

ActiveRecord::Errors既存のオブジェクトで使用できますか?

Bla簡単な方法で作成されたオブジェクトがあります。名前csv ファイルを受け取るだけです。

このオブジェクトが作成された後、非同期アクションが呼び出されsidekiqcsv ファイルが処理されてオブジェクトの他の属性が作成されますBla

ファイル処理中に発生する可能性のある例外を処理する方法がわかりません。errors検証エラーのためにアクセス可能で、によって提供されるオブジェクトにエラーを追加することを考えていますActiveRecord::Errors。そうすれば、エラーをそのショー ビューに表示できるようになります。

このオブジェクトがオブジェクトの作成で使用されているのを見たことがあります。オブジェクトがデータベースにコミットされる前に、フォームにエラーを表示するために使用されます。

作成後に発生したエラーを表示するために使用できますか? これらのエラーはデータベースに保存されていますか?

4

1 に答える 1

1

Rails の検証エラーはデータベースに保存されません。これらは、db 書き込みをブロックすることを目的としています。つまり、無効なオブジェクトをデータベースに書き込むことを防ぎます。

検証エラーは ActiveRecord オブジェクトの 'errors' 属性にのみ保存され、変数が「生きている」限り保持されます。Rails では通常、コントローラーの実行に続くページをレンダリングするのにかかる間のみ保持されます。アクション。

についてはよくわかりませんsidekiq。Rails サーバーとは別のプロセスで実行されている場合、検証エラーはメモリ内のみにあるため、両者の間で共有されません。別のプロセスではない場合でも、非同期アクションが終了すると、検証を持つ変数が存在しなくなると確信しています。

したがって、提案されたアプローチは機能しないと思われます。これらの検証エラーをより永続的なメモリに保存する必要がある場合があります。これにより、検出されたエラーsidekiqを Rails が読み取ったり、その逆を行うことができます。

于 2013-04-03T19:03:36.673 に答える