Ember-Data は設計上、Active Model Serializers と互換性があるはずですがhas_many
、埋め込まれた ID との関係をシリアル化することについては歩調を合わせていないようです。
たとえば、シリアライザー
class PostSerializer < ActiveModel::Serializer
embed :ids
has_many :comments
end
JSONを生成します
{
"post": {
"comment_ids": [...]
}
}
しかし、Ember Data のデフォルト設定では、
App.Post = DS.Model.extend({
DS.hasMany('App.Comment'),
});
App.Comment = DS.Model.extend();
は、コメントの関連付けがサフィックスcomments: [...]
なしでシリアル化されることを想定しています ( Ember.js ガイドの REST アダプター セクションの関係サブセクションを参照してください)。_ids
回避策として次のことを試しました。
class PostSerializer < ActiveModel::Serializer
attribute :comments
def comments
object.comment_ids
end
end
動作しますが、サイドローディングを有効にするために追加embed :ids, :include => true
しても、AMS はそれが関連付けであることを認識していないため、何もしません。
編集: active_model_serializers (0.6.0)
gem と Ember-Data リビジョン 11を使用しています