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

If I correctly understand your aim, you shouldn't have to specify { embedded: true }. The default ember-data behavior is to be lazy.

It you are using active_model_serializers (which I strongly recommend to you), you should declare your server-side serializer as follow:

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