如何在嵌入式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();
当我提交表时,表格帖子正确地嵌入数据,但它也为每个子字段发送单独的请求404s并将子模型置于错误状态。
答案 0 :(得分:0)
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_metadata
命名为field_metadatas
。当然,在创建记录的对象中,您必须添加适当的ID(field_metadata_id
和table_metadata_id
)才能使关系正常工作。