0

ActiveModel の永続性に関連する興味深い問題があります。私たちの環境では、次のように動作するために特定のモデルの更新が必要です。

  1. 更新リクエストを受信したインスタンスはアーカイブされます。つまり、アーカイブされたフィールドが true に設定されていることを除いて、その状態は更新前のままです。

  2. 元のインスタンスの更新された属性を持つ新しいインスタンスidが作成されます。

  3. 更新操作の呼び出し元が保持しているオブジェクトは、新しいインスタンスのように動作する必要があります。つまり、この動作は、従来の更新処理の一部としてモデル内にカプセル化する必要があります。

around_updateコールバックは良いフックを提供する可能性がありますが、注意が必要な部分は、id既存のオブジェクトの を新しいインスタンスの に変更する必要がありid、永続性やキャッシュなどに関して Rails を混乱させる可能性があるかどうかはわかりません.

アプローチに関するコメントと、around_updateこの問題を解決するための新しいアイデアをいただければ幸いです。Mongoid 2.4 を使用していますが、一般的に ActiveModel に適用される回答を期待しています。

4

0 に答える 0