次のシナリオで使用されるワークフローを理解するのに苦労しています。
ユーザーがモデルを作成します。これを製品と呼びましょう。入力フォームを提示します。検証以外の何らかの理由による保存エラー (タイムアウト、アクセス拒否など) Ember では、これによりモデルがエラー状態になります。UI の観点から言えば、私がやりたいことは、画面にメッセージを表示し (簡単)、ユーザーが再試行できるようにすることだけです (明らかに簡単ではありません)。
トランザクションを再利用しないように書かれているのを何度も見てきました。私はその論理を理解しています。新しい製品の場合、単純に別の新しい製品を作成し、元の製品のデータ (属性、関係) をマージして、コントローラーのコンテンツを新しい製品に置き換えます。これは難しいことではなく、うまく機能しているように見えますが、(うまくいけば) もっと良い方法があるかもしれません。
しかし、製品を編集しているときに重大な問題が発生し、上記の解決策が機能しません。製品モデルは現在エラー状態にあり、同じ状態ではないこの製品のコピーを取得する方法が見つかりません。
私が理解できないのは、このモデルがエラー状態になったときに何ができるかということです。私は次のことを試しました:
ロールバック:これは機能しません。エラー状態のトランザクションをロールバックすることはできません。
リロード:上記と同じ。エラー状態のレコードをリロードすることはできません。
レコードの新しいコピーを取得します:そこで、既存のレコードと同じ ID で App.Product.find(id) を試します。エラー状態の既存のレコードのコピーが表示されるだけです。
ここでかなり基本的なものが欠けていることを願っています。エラー状態 (または無効な状態) からレコードを適切にロールアウトすることは可能ですか?
これらのモデルの状態を変更する簡単な方法がある場合、さらにコミットを試みるために新しいトランザクションを作成する必要がありますか?