繁体   English   中英

灰烬创建多态记录

[英]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中创建记录。

http://jsbin.com/qebis/6/

我有什么想法要实现这一目标吗? 我看着这个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.11MODEL_FACTORY_INJECTIONS = true阻止模型继承形式用于多态关系。

参见https://github.com/emberjs/data/issues/2065

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM