DS.Model クラスの属しているLeaf
クラスTree
があり、1 つがTree
hasManyleaves
であるとします。つまり、次のようになります。
App.Leaf = DS.Model.extend({
tree: DS.belongsTo('App.Tree'),
});
App.Tree = DS.Model.extend({
leaves: DS.hasMany('App.Leaf'),
})
これまでのところ、私は手動でTree
の葉のフィールドを操作しています:
tree = App.store.create( App.Tree )
leaf = App.store.create( App.Leaf )
tree.get('leaves').pushObject( leaf )
App.store.commit()
これは機能しているように見えますが、その後、事態は奇妙になります:
リーフのツリー フィールドを確認すると、そこに App.Tree インスタンスがあり、id がツリーの ID と一致することがわかります。
leaf.get('tree').get('id') // outputs 1
tree.get('id') // outputs 1
これまでのところ大丈夫です。ここで、ツリーの葉フィールドをチェックします。これは、Ember 可変配列であると推測されます。次のように表示されます。
branch.get('leaves').content // outputs [ 2 ]
leaf.get('id') // outputs 1
したがって、葉のミュータブル配列は葉の ID の配列を格納していると思いますが、その ID は葉のインスタンスの ID と一致しません。
葉の ID が 2 の場合、branch.leaves.content フィールドに 4 として保存されます。葉の ID が 3 の場合、保存される ID は 6 などです。