0

次のモデルがあるとします。

App.Item = DS.Model.extend({
    owner: DS.belongsTo('App.Person', {embedded: true})
})

これは、この埋め込まれた関連付けをロードできることを意味しますが、すでに存在する人のために新しいアイテムを作成したい場合、ember-data はすべての新しいアイテムに対して Person オブジェクトも埋め込むことも意味します。

埋め込みオブジェクトをロードすることはできますが、関連付けを作成するときに ID のみを送信することはできますか? つまり、代わりにこれを送ってください:

{"item": {"owner_id": 5}}

編集: 明確にするために、ember-dataに埋め込み関係をロードさせたいのですが、 {embedded: true} を設定した場合、このコード:

App.Item.createRecord({name: 'Something', owner: App.Person.find(1)});
// And a few moments later when App.Person.find(1) has loaded
App.store.commit()

次のjsonを送信します。

{ "item": {"name": "Something", owner: { id: 1, name: "whatever" }}

しかし、私が欲しいのは:

{ "item": {"name": "Something", owner_id: 1 }}

基本的に、embedded = true を設定すると、オブジェクトの作成時に ember-data も関連付けを埋め込みます。

4

1 に答える 1

1

私があなたの目的を正しく理解していれば、指定する必要はありません{ embedded: true }。デフォルトの ember-data の動作は遅延です。

使用している場合active_model_serializers (これを強くお勧めします)、サーバー側のシリアライザーを次のように宣言する必要があります。

class ItemSerializer < ActiveModel::Serializer
  embed :ids, include: false
  #...
end
于 2012-11-07T09:10:27.567 に答える