Ember Data 1.0 ベータ版を使用しています。
次のように定義されたモデルがあります。
App.Artist = DS.Model.extend({
first_name: DS.attr('string'),
last_name: DS.attr('string'),
practices: DS.hasMany('practice')
});
そして、api/artists でモデルをフェッチすると、コレクションが取得され、各アーティストのペイロードには、ID の配列を持つ「practices」属性が含まれます。
{
"artists": [
{
"id": 2,
"first_name": "An",
"last_name": "Artist",
"practices": [
1,
2
]
},
]
}
ここまでは順調ですね。Ember マジックが発生し、「App.Artist」のインスタンスの「practices」プロパティに問題なくアクセスできます。
ここで、アーティストを作成すると、サーバーは次のペイロードを返します。
{
"artist": {
"id": 38,
"first_name": "New",
"last_name": "Artist",
"practices": [
4
]
}
}
モデルが新しい ID で更新されます。ただし、「プラクティス」にアクセスすると、関連するモデル インスタンスではなく、生の配列値が取得されます。
では、関係を持つレコードを作成した後、関連するオブジェクトをインスタンスに手動で追加し直す必要がありますか? または、モデルをトリガーしてリレーションを再同期できますか?
洞察を事前にありがとう!
アップデート:
保存操作の完了後にモデルがデシリアライズされていないため、関係が失われているようです。モデルをストアに戻すことができます。これにより、データが逆シリアル化されます。
したがって、上記のコードに従って、 App.Artist のインスタンスがあるartist
場合
artist.get('store').push('artist', artist.get('data'));
関係が利用可能になります。ただし、これが「正しい」かどうかはまだわかりません。