私はこれらの基本的なモデルを持っています(問題を示すために非常に単純化されています):
App.Alert = DS.Model.extend({
recipients: DS.hasMany('App.Person')
})
App.Person = DS.Model.extend({
name: DS.attr("string")
})
次に、次のことを試して実行します。
var alert = App.Alert.createRecord()
var persons = App.Person.find({page: 1, pageSize: 10})
alert.get("recipients").pushObjects(persons.toArray())
var persons2 = App.Person.find({page: 1, pageSize: 10})
その時点で私は得る:
Uncaught Error: Attempted to handle event `loadedData` on <App.Person:ember592:121878738770883> while in state rootState.loaded.updated.uncommitted. Called with undefined
そのため、オブジェクトをリレーションシップに追加すると、コミットされていない状態に変わるようです。質問は、モデルに hasMany があり、ユーザーがアラートに人を追加できる検索ダイアログを表示したい場合、どのように進めればよいですか? 通常、検索の結果、すでにアラートに追加されているためダーティなオブジェクトが読み込まれます。
現在の回避策は、コントローラーに受信者として追加されるものを保持し、保存する前に追加することです。ただし、それを行ってもサーバーが送信を承認しない場合は、受信者のみをロールバックして、ユーザーが編集を続行できるようにする必要があります。
ユーザーが同じタイプのレコードを検索できるようにする hasMany 関係を管理するためのアプローチは何ですか。