[英]Ember create a polymorphic record
我正在尝试为具有多态关系的模型创建记录。
这是模型:
App.SupportedTransportationMethod = DS.Model.extend({
resource: DS.belongsTo('resource', { polymorphic: true }),
transportationMethod: DS.belongsTo('transportationMethod')
});
我正在尝试创建记录的模型:
App.Contact = DS.Model.extend({
supportedTransportationMethods: DS.hasMany('supportedTransportationMethod', { async: true }),
companyName: DS.attr('string')
});
在这里,我试图创建一条记录:
supportedTransportationMethod = this.store.createRecord('supportedTransportationMethod', {
transportationMethod: transportationMethod,
resource: contact
});
但是我得到一个断言错误:
Uncaught Error: Assertion Failed: You can only add a 'resource' record to this relationship
我有一个jsbin显示这一点。 如果单击其中一个复选框,则会收到错误消息。 我正在尝试在CheckboxItemController中创建记录。
我有什么想法要实现这一目标吗? 我看着这个SO,但是在动态创建不知道ID是什么的地方并不能很好地实现。 推也感觉不对。
更新:
如果我使用ember-data产品版本,则它允许创建(因为断言是从产品版本中删除了代码)。 所以我想知道这是否是断言代码中的错误?
Ember.assert("You can only add a '" + type + "' record to this relationship", !value || value instanceof typeClass);
但是,即使它是从基本模型扩展的,它也确实会使用设置为当前模型类型的类型来创建它。 尚不确定这是否是一件好事...
更新2:
这是另一个jsbin,用于显示先前更新的效果。 http://jsbin.com/qebis/7/edit
对于使用ember-cli
,请注意,从Ember Data : 1.0.0-beta.11
, MODEL_FACTORY_INJECTIONS = true
阻止模型继承形式用于多态关系。
Ember Data期望记录从相同的基类继承。 在您的情况下,您正在指定resource
但是似乎您没有将其定义为DS.Model
。
您应该具有以下内容:
App.Resource = DS.Model.extend();
App.Contact = App.Resource.extend({
supportedTransportationMethods: DS.hasMany('supportedTransportationMethod', { async: true }),
companyName: DS.attr('string')
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.