加载但不发送嵌入的对象

时间:2012-11-06 18:38:52

标签: ember.js ember-data

假设您有以下型号:

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也会嵌入关联。

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的目标,您不必指定{ embedded: true }。默认的ember-data行为是懒惰的。

您正在使用active_model_serializers (我强烈建议您使用),您应该声明服务器端序列化程序如下:

class ItemSerializer < ActiveModel::Serializer
  embed :ids, include: false
  #...
end