【发布时间】:2014-07-23 20:41:03
【问题描述】:
我正在尝试为具有多态关系的模型创建记录。
这是模型:
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 中创建记录。
任何想法我如何做到这一点?我查看了this SO,但动态创建您不知道 id 将是什么的地方并不顺利。推动也不对。
更新:
如果我使用 ember-data prod 版本,它允许创建(因为断言是从 prod 版本中删除的代码)。所以我想知道这是否是断言代码中的错误?
Ember.assert("You can only add a '" + type + "' record to this relationship", !value || value instanceof typeClass);
但是,它确实使用设置为当前模型类型的类型来创建它,即使它是从基本模型扩展而来的。还不确定这是否是一件好事......
更新 2:
这里是另一个jsbin,用来展示之前更新的效果。 http://jsbin.com/qebis/7/edit
【问题讨论】:
标签: javascript ruby-on-rails ember.js polymorphism ember-data