Ember.js 在余烬数据版本12中,多态性有许多和以下的关系

Ember.js 在余烬数据版本12中,多态性有许多和以下的关系,ember.js,ember-data,Ember.js,Ember Data,我在使用ember data rev12实现我所理解的多态关系时遇到了问题 我有以下型号: App.Project = DS.Model.extend lists: DS.hasMany('App.List', { polymorphic: true }) App.Proposal = DS.Model.extend lists: DS.hasMany('App.List', { polymorphic: true }) App.Employee = DS.Model.extend

我在使用ember data rev12实现我所理解的多态关系时遇到了问题

我有以下型号:

App.Project = DS.Model.extend
  lists: DS.hasMany('App.List', { polymorphic: true })

App.Proposal = DS.Model.extend
  lists: DS.hasMany('App.List', { polymorphic: true })

App.Employee = DS.Model.extend
  lists: DS.hasMany('App.List', { polymorphic: true })

App.List = DS.Model.extend
  name: DS.attr('string')
  #project: DS.belongsTo('App.Project', { polymorphic: true })
我正试图从项目路由器中创建一个新列表,如下所示

App.ProjectRoute = Ember.Route.extend
  events:
    newList: (project) ->
      lists = project.get('lists')
      list = App.List.createRecord(name: 'list1')
      lists.pushObject(list)
      @store.commit()
但是对服务器的请求设置了不正确的多态密钥

我希望有效载荷看起来像:

 { list: { name: list1, listable_type: project, listable_id: 100 } }
但是得到:

{ list: { name: list1, project_type: project, project_id: 100 } }
我错过了什么?有没有办法定义多态类型或键


这是我的临时技能


首先,根据当前的模型,您不需要使用多态关联。而且您可能不希望在关系的两端都设置
多态性
选项

如果希望有效负载包含可列出的
,只需重命名属性:

App.List = DS.Model.extend
  name: DS.attr('string')
  listable: DS.belongsTo('App.Project', { polymorphic: true })
更新

根据我对您的类的理解,它是一个可以属于不同类型的
列表。因此,您应该这样定义您的模型:

App.Listable = DS.Model.extend
  lists: DS.hasMany('App.List')

App.Project = App.Listable.extend

App.Proposal = App.Listable.extend

App.Employee = App.Listable.extend

App.List = DS.Model.extend
  name: DS.attr('string')
  listable: DS.belongsTo('App.Listable', { polymorphic: true })
{list: {name: "list1", listable_type: 'project', listable_id: 100}}
有效载荷将如下所示:

App.Listable = DS.Model.extend
  lists: DS.hasMany('App.List')

App.Project = App.Listable.extend

App.Proposal = App.Listable.extend

App.Employee = App.Listable.extend

App.List = DS.Model.extend
  name: DS.attr('string')
  listable: DS.belongsTo('App.Listable', { polymorphic: true })
{list: {name: "list1", listable_type: 'project', listable_id: 100}}

我不知道您是否也希望同时将列表添加到多个列表中。基于您的模型名称,我很想相信这不是您想要的:列表应该包含不同的对象(项目、提案、员工)。而且不是一个项目可以有多个列表。

首先,根据您当前的模型,您不需要使用多态关联。而且您可能不希望在关系的两端都设置
多态性
选项

如果希望有效负载包含可列出的
,只需重命名属性:

App.List = DS.Model.extend
  name: DS.attr('string')
  listable: DS.belongsTo('App.Project', { polymorphic: true })
更新

根据我对您的类的理解,它是一个可以属于不同类型的
列表。因此,您应该这样定义您的模型:

App.Listable = DS.Model.extend
  lists: DS.hasMany('App.List')

App.Project = App.Listable.extend

App.Proposal = App.Listable.extend

App.Employee = App.Listable.extend

App.List = DS.Model.extend
  name: DS.attr('string')
  listable: DS.belongsTo('App.Listable', { polymorphic: true })
{list: {name: "list1", listable_type: 'project', listable_id: 100}}
有效载荷将如下所示:

App.Listable = DS.Model.extend
  lists: DS.hasMany('App.List')

App.Project = App.Listable.extend

App.Proposal = App.Listable.extend

App.Employee = App.Listable.extend

App.List = DS.Model.extend
  name: DS.attr('string')
  listable: DS.belongsTo('App.Listable', { polymorphic: true })
{list: {name: "list1", listable_type: 'project', listable_id: 100}}

我不知道您是否也希望同时将列表添加到多个列表中。基于您的模型名称,我很想相信这不是您想要的:列表应该包含不同的对象(项目、提案、员工)。没有一个项目可以有多个列表。

好的,我在示例中添加了更多的模型。我想唯一的方法是为每个父对象创建一个列表模型。唯一的问题是,如果我为每个eg(App.ProjectList listable:belongsTo'Project',{poly:y})创建一个单独的列表模型,则键是正确的,但json根和url是错误的。例如(put=“api/project\u list”负载={project\u list:{listable\u type:project,listable\u id:100})。必须有一种方法可以通过使用type和type_id设置多个多态列表。感谢您的深入了解。这样可以工作,但存在一些问题。如何定义多个多态列表多个关系,例如project和employee都有多个任务。是否可以从可列表和可任务类扩展?还有我的后端(轨道)预期类型为camelcased。是否可以指定类型?listable_type:“project”实际上应该是listable_type:“project”对于camelcase问题,有一个开放的票证。我需要解决这个问题。短期解决方案是创建一个新模型,该模型将从listable继承,并将为任务添加hasMany关系。我不会我想唯一的方法是为每个父级创建一个列表模型。唯一的问题是如果我为每个eg创建一个单独的列表模型(App.ProjectList listable:belongsTo'Project',{poly:y}),键是正确的,但json根和url是错误的。eg(put=“api/project_list”有效负载={project_list:{listable_type:project,listable_id:100})。必须有一种方法可以通过使用type和type_id设置多个多态列表。感谢您的深入了解。这样可以工作,但存在一些问题。如何定义多个多态列表多个关系,例如project和employee都有多个任务。是否可以从可列表和可任务类扩展?还有我的后端(轨道)预期类型为camelcased。是否可以指定类型?listable_type:“project”实际上应该是listable_type:“project”对于camelcase问题,有一个开放的票证。我需要解决这个问题。短期解决方案是创建一个新模型,该模型将从listable继承,并将为任务添加hasMany关系。我不会ry需要为该用例提供解决方案。