1

如何在不发送单独请求的情况下将模型的新实例创建到嵌入式 hasMany 关系中?

这就是我目前正在做的事情。我的模型:

 AUI.TableMetadata = DS.Model.extend({
    name: DS.attr('string'),
    fields: DS.hasMany('AUI.FieldMetadata')
});

AUI.FieldMetadata = DS.Model.extend({
    name: DS.attr('string'),
    table: DS.belongsTo('AUI.TableMetadata')
});

店铺设置:

Adapter = DS.RESTAdapter.extend();

Adapter.map(AUI.TableMetadata, {
    fields: { embedded: 'always'},
});

AUI.store = DS.Store.create({
  revision: 11,
  adapter: Adapter.create({}),
});

创建记录:

var table = AUI.TableMetadata.createRecord({
    name: 'Cool Creatures',
    fields: []
});

var field = AUI.Field.createRecord({
    name: 'octopi',
});

table.get('fields').pushObject(field);
table.get('transaction').commit();

当我提交表格时,表格帖子正确地嵌入了数据,但它也为每个 404 的子字段发送单独的请求,并将子模型置于错误状态。

4

1 回答 1

0

Ember Data 1.0.0 beta 中 DS.Model 的新语法

AUI.TableMetadata = DS.Model.extend({
    name: DS.attr('string'),
    field_metadata: DS.hasMany('field_metadata')
});

AUI.FieldMetadata = DS.Model.extend({
    name: DS.attr('string'),
    table_metadata: DS.belongsTo('table_metadata')
});

在控制器或路由内部

this.store.createRecord('field_meta', { name: 'octopi' });
this.store.createRecord('table_meta', { name: 'Cool Creatures' });

我不确定 Ember 是否能像检测 Rails 这样的复数形式一样好,因此您可能必须将其命名field_metadatafield_metadatas. 当然,在创建记录的对象中,您必须添加适当的 ID (field_metadata_idtable_metadata_id) 才能使关系起作用。

于 2013-10-17T11:34:46.137 回答