私は人を指すダイヤラを持っています:
App.Dialer = DS.Model.extend({
created_at: DS.attr('date'),
person: DS.belongsTo('App.Person'),
didCreate: function() { alert('didCreate: ' + this + ', ' + this.get('person')); }
});
App.Person = DS.Model.extend({
name: DS.attr('string'),
dialers: DS.hasMany('App.Dialer')
});
新しいダイヤラーを作成します。
var d = App.store.createRecord(App.Dialer, {
person: App.Person.find(1)
});
alert('before commit: ' + d + ', ' + d.get('person'));
App.store.commit();
alert('after commit: ' + d + ', ' + d.get('person'));
person_id が正しく設定された状態で、サーバー上にレコードが正しく作成されます。commit() を呼び出す前後の 2 つのアラート ステートメントも正しく機能し、dialer オブジェクトとその person オブジェクトの両方が取り込まれます。
ただし、レコードが作成された後、Ember が didCreate イベント ハンドラーを呼び出すと、人物の関連付けが消えてしまい、代わりに this.get('person') を呼び出すと、'this' の値が最初の 2 つのアラートと同じ ID を持つ新しいダイヤラ オブジェクト。