假设您有以下型号:
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也会嵌入关联。
答案 0 :(得分:1)
如果我正确理解您的目标,您不必指定{ embedded: true }
。默认的ember-data行为是懒惰的。
您正在使用active_model_serializers
(我强烈建议您使用),您应该声明服务器端序列化程序如下:
class ItemSerializer < ActiveModel::Serializer
embed :ids, include: false
#...
end