6

Ember-DataはActive Modelシリアライザと互換性があるとわかっていますが、組み込みのあるhas_manyのシリアライズID。例えばは、IDとサイドローディングが埋め込まれたEmber-DataモデルとActive Modelシリアライザのhas_manyコンフィグレーション

、シリアライザ

class PostSerializer < ActiveModel::Serializer 
    embed :ids 
    has_many :comments 
end 

App.Post = DS.Model.extend({ 
    DS.hasMany('App.Comment'), 
}); 

App.Comment = DS.Model.extend(); 

コメントアソシエーションがcomments: [...]としてシリアル化されることを想定し、エンバーデータにJSON

{ 
    "post": { 
     "comment_ids": [...] 
    } 
} 

が、デフォルト設定を生成します_ids接尾辞なし(the relationships sub-section of the REST adapter section of the Ember.js guide)。

私は回避策として、次のことを試してみました:

class PostSerializer < ActiveModel::Serializer 
    attribute :comments 
    def comments 
    object.comment_ids 
    end 
end 

それは動作しますが、AMSは、それは協会のことを知らないので、今サイドローディングを有効にするためにembed :ids, :include => trueを追加すると、何もしません。

編集:私は11

答えて

7

App.ApplicationSerializer = DS.ActiveModelSerializer.extend({}); 

としては、ここで説明:Transition Guide

は非常にうまく動作します!

3

あなたは、私がactive_model_serializers 0.6を使用してい

DS.RESTAdapter.map('App.Post', { comments: { keyName: 'comment_ids' } }); 
+0

これはおそらく最も合理的な回避策です。 – ahmacleod

2

クライアント側でアダプタの右側のマッピングを設定しようとすることができますactive_model_serializers (0.6.0)宝石とエンバーデータ修正を使用しています.0とember_data 11.あなたが報告している動作が表示されません。

マイシリアライザ:

class CentreSerializer < ActiveModel::Serializer 
    embed :ids 

    attributes :id, :name 
    has_many :rooms 
end 

ローカルホストの出力:3000 /センター/それも伝わる前にレールのアプリが正常に形成されてJSONを生産している私の場合は1.json

{ 
    centre: { 
    id: 1, 
    name: "Centre0", 
    rooms: [ 
     1, 
     2, 
     3, 
     4, 
     5 
    ] 
    } 
} 

エバーにクライアント側のマッピングに頼る必要はありません。

+0

私は実際にAMSのエッジビルドを使用していました。 'has_many'関連のシリアライゼーションが最近変更されたようです。 – ahmacleod

+0

その場合、https://github.com/rails-api/active_model_serializers#associationsに記載されているように、key:引数を使用できませんか? –

+0

はい、これもやっています。私は以前のようなオプションを探していたが、私はそれを見落とした。 – ahmacleod

0

this commitがそのような状況に対応しているようです。 has_oneアソシエーションをassociation_idとしてシリアル化するようにAMSを更新したとき(AMSをember-dataに準拠させる)、belongs_toアソシエーションをassociation_idsとしてシリアル化するように変更されました。私はこれを使用して終了燃えさしデータ1.0.0-beta.3については

+0

この問題は、この[プルリクエスト](https://github.com/emberjs/data/pull/727)で対処されています。 – ahmacleod

関連する問題