Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬创建一个多态记录_Javascript_Ruby On Rails_Ember.js_Polymorphism_Ember Data - Fatal编程技术网

Javascript 余烬创建一个多态记录

Javascript 余烬创建一个多态记录,javascript,ruby-on-rails,ember.js,polymorphism,ember-data,Javascript,Ruby On Rails,Ember.js,Polymorphism,Ember Data,我正在尝试为具有多态关系的模型创建一个记录 模型如下: App.SupportedTransportationMethod = DS.Model.extend({ resource: DS.belongsTo('resource', { polymorphic: true }), transportationMethod: DS.belongsTo('transportationMethod') }); 我试图创建记录的模型是: App.Contact = DS.Model.exten

我正在尝试为具有多态关系的模型创建一个记录

模型如下:

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中创建记录

你知道我该如何做到这一点吗?我看了,但是动态创建的时候,你不知道id会是什么,这并不顺利。推也感觉不对

更新:

如果我使用ember data prod版本,它允许创建(因为断言是从prod版本中删除的代码)。所以我想知道这是否是断言代码中的错误

Ember.assert("You can only add a '" + type + "' record to this relationship", !value || value instanceof typeClass);
但是,即使它是从基础模型扩展而来,它也会使用设置为当前模型类型的类型来创建它。还不确定这是不是一件好事

更新2:


下面是另一个jsbin以显示上一次更新的效果

余烬数据期望从同一基类继承记录。在您的例子中,您正在指定
资源
,但似乎没有将其定义为
DS.Model

您应该有如下内容:

App.Resource = DS.Model.extend();

App.Contact = App.Resource.extend({
  supportedTransportationMethods: DS.hasMany('supportedTransportationMethod', { async: true }),
  companyName: DS.attr('string')
});

Ember Data希望这些记录继承自同一基类。在您的例子中,您正在指定
资源
,但似乎没有将其定义为
DS.Model

您应该有如下内容:

App.Resource = DS.Model.extend();

App.Contact = App.Resource.extend({
  supportedTransportationMethods: DS.hasMany('supportedTransportationMethod', { async: true }),
  companyName: DS.attr('string')
});

对于那些使用
ember-cli
的用户,请注意
MODEL\u-FACTORY\u INJECTIONS=true
阻止模型继承从
ember-Data:1.0.0-beta.11开始为多态关系工作


请参见了解那些使用
余烬cli的人,请注意,
模型工厂注入=true
阻止模型继承形式在
余烬数据:1.0.0-beta.11
时用于多态关系


啊哈,我明白我的错误了。我一定已经看过你的要点一千遍了,但从来没有注意到你是从基类继承来的。嘘我。。。。它现在起作用了!谢谢你的澄清!啊哈,我明白我的错误了。我一定已经看过你的要点一千遍了,但从来没有注意到你是从基类继承来的。嘘我。。。。它现在起作用了!谢谢你的澄清!这适用于
ED#.0.0-beta.12
或更低版本。固定在
beta.14
中,适用于
ED#.0.0-beta.12
或更低版本。固定在
beta.14中