【问题标题】:Ember create a polymorphic recordEmber 创建多态记录
【发布时间】: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 中创建记录。

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

任何想法我如何做到这一点?我查看了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


    【解决方案1】:

    对于那些使用ember-cli 的人,请注意MODEL_FACTORY_INJECTIONS = trueEmber Data : 1.0.0-beta.11 开始阻止模型继承形式适用于多态关系。

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

    【讨论】:

    • 这适用于ED#.0.0-beta.12 或更低版本。已在beta.14 中修复
    【解决方案2】:

    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')
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    相关资源
    最近更新 更多