Aar*_*oir 1 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
lists: DS.hasMany('App.List', { polymorphic: true })
App.List = DS.Model.extend
name: DS.attr('string')
#project: DS.belongsTo('App.Project', { polymorphic: true })
Run Code Online (Sandbox Code Playgroud)
我试图从项目路由器创建一个新的列表,如此.
App.ProjectRoute = Ember.Route.extend
events:
newList: (project) ->
lists = project.get('lists')
list = App.List.createRecord(name: 'list1')
lists.pushObject(list)
@store.commit()
Run Code Online (Sandbox Code Playgroud)
但是对服务器的请求是错误地设置了多态键.
我期待有效载荷看起来像:
{ list: { name: list1, listable_type: project, listable_id: 100 } }
Run Code Online (Sandbox Code Playgroud)
但得到了:
{ list: { name: list1, project_type: project, project_id: 100 } }
Run Code Online (Sandbox Code Playgroud)
我错过了什么?有没有办法定义多态类型或键?
这是我的临时黑客
首先,根据您拥有的当前模型,您不需要使用多态关联.而且您可能不希望polymorphic在关系的两端设置选项.
如果要包含有效负载listable,只需重命名属性即可:
App.List = DS.Model.extend
name: DS.attr('string')
listable: DS.belongsTo('App.Project', { polymorphic: true })
Run Code Online (Sandbox Code Playgroud)
UPDATE
根据我对你的类的理解,它List可以属于不同的类型.所以你应该像这样定义你的模型:
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 })
Run Code Online (Sandbox Code Playgroud)
并且有效负载将如下所示:
{list: {name: "list1", listable_type: 'project', listable_id: 100}}
Run Code Online (Sandbox Code Playgroud)
我不知道你是否也希望同时将一个列表添加到多个可列表中.根据您的模型名称,我很想相信它不是您想要的:列表应包含不同的对象(项目,提案,员工).而不是一个项目可以有多个列表.
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |