DS.Model
私は2つのクラスの間に次の関係を持っています:
App.DocumentType = DS.Model.extend
...
propertyTypeJoins: DS.hasMany("App.DocumentTypePropertyType")
App.DocumentTypePropertyType = DS.Model.extend
documentType: DS.belongsTo('App.DocumentType')
子レコードは常に埋め込まれ、個別に保存されることはありません:
App.Adapter.map 'App.DocumentType'
propertyTypeJoins:
embedded: 'always'
documentType
レコードと n 関連のレコードを使用してトランザクションをコミットするとDocumentTypePropertyType
、次のエラーが発生します。
"Attempted to handle event 'didCommit' on <App.DocumentTypePropertyType:ember1806:38072> while in state rootState.loaded.updated.uncommitted. Called with undefined"
コードを調べると、アダプターのメソッドが各埋め込みレコードにイベントをdidSaveRecord
送信することがわかりました。didCommit
子は親と一緒に保存されると宣言されているため、これはまったく問題ないようです (embedded: 'always'
上記を参照)。
willCommit
イベントが子に伝達されないため、エラーが発生します。したがって、子はまだuncommitted
状態にあり、その状態では処理できませんdidCommit
。親自体が移行されたinFlight
ため、エラーはスローされません。
私の意見では、観察された動作には一貫性がありません。すべてのイベントを子に送信するか、何も送信しないかのいずれかです。そうしないと、あらゆる種類の一貫性のない動作が発生する可能性があります。
私は ember-data ではなく、反対しているように見えるので、自分が間違っていることを考えるために立ち止まりました。
教えて頂けますか?