私は次のモデルを持っています:
App.Publication = DS.Model.extend({
title: DS.attr('string'),
bodytext: DS.attr('string'),
author: DS.belongsTo('author')
});
App.Author = DS.Model.extend({
name: DS.attr('string')
});
そして、次のjsonデータ:
{
"publications": [
{
id: '1',
title: 'first title',
bodytext: 'first body',
author_id: 100
},
{
id: '2',
title: 'second title',
bodytext: 'second post',
author_id: 200
}
];
}
Ember Data RC12 ではこれが機能しました (json で author_id または author を指定すると、出版物には常に正しい著者がリンクされます)。
Ember Data 1.0.0 では、これは機能しなくなりました。author は常に null です。
一部のドキュメントでは、json データで "author_id" を使用しているため (単に作成者ではありません)、モデルでキーを指定する必要があることがわかりました。したがって:
author: DS.belongsTo('author', { key: 'author_id' })
ただし、これは機能しません。パブリケーションの著者は null のままです。
今のところ唯一の解決策は、カスタム シリアライザーを実装し、author_id を (normailzeId を介して) オーサーにオーバーライドすることです。バックエンドのデータ構造を変更できません...したがって:
App.MySerializer = DS.RESTSerializer.extend({
//Custom serializer used for all models
normalizeId: function (hash) {
hash.author = hash.author_id;
delete hash.author_id;
return hash;
}
});
上記は正しい方法ですか?