Ember.js 余烬数据中的多态关系

Ember.js 余烬数据中的多态关系,ember.js,ember-data,Ember.js,Ember Data,我有三个模型:公司、个人和任务。一家公司有很多人。一个人有一个公司。一个公司有很多任务。一个人有很多任务 任务关系是多态的 这是我的模型 App.Taskable = DS.Model.extend({ tasks: DS.hasMany('task') }); App.Task = DS.Model.extend({ subject: DS.attr('string'), taskable: DS.belongsTo('taskable', { polymorp

我有三个模型:公司、个人和任务。一家公司有很多人。一个人有一个公司。一个公司有很多任务。一个人有很多任务

任务关系是多态的

这是我的模型

App.Taskable = DS.Model.extend({

    tasks: DS.hasMany('task')
});

App.Task = DS.Model.extend({

    subject: DS.attr('string'),

    taskable: DS.belongsTo('taskable', { polymorphic: true})
});

App.Person = App.Taskable.extend({

  firstName: DS.attr('string'),

  lastName: DS.attr('string'),

  email: DS.attr('string'),

  company: DS.belongsTo('company'),

  fullName: function() {
    return this.get('firstName') + ' ' + this.get('lastName');
  }.property('firstName', 'lastName')

});

App.Company = App.Taskable.extend({

    name: DS.attr('string'),

    people: DS.hasMany('person')
});
请注意,Person和Company扩展了Taskable。我相信我已经正确地定义了这些关系。但我不知道如何懒散地加载任务

这是我的个人观点

  <script type="text/x-handlebars" data-template-name='show/_person'>
    <div>
    <form class="form-horizontal" role="form">
      <div class="form-group">
        <label class="col-sm-2 control-label">Name</label>
        <div class="col-sm-10">
          <p class="form-control-static">{{fullName}}</p>
        </div>
      </div>
      <div class="form-group">
        <label class="col-sm-2 control-label">Company</label>
        <div class="col-sm-10">
          <p class="form-control-static">{{company.name}}</p>
        </div>
      </div>
      <div class="form-group">
        <label class="col-sm-2 control-label">Tasks</label>
        <div class="col-sm-10">
          <p class="form-control-static">
          {{#each task in tasks}}
            {{task.subject}}<br />
          {{/each}}
          </p>
        </div>
      </div>
    </script>
为与该人员关联的公司发出GET请求,但未对任务发出请求。如何获取与个人或公司相关的任务?我希望能够向people/3/tasks或类似的对象发出GET请求,我认为只有ActiveModelAdapter实现了多态关联

要使其正常工作,您需要使用以下格式:

获取/任务

获取/tasks/1

我更新了您的示例,请看一看

我认为只有ActiveModelAdapter实现了多态关联

要使其正常工作,您需要使用以下格式:

获取/任务

获取/tasks/1


我用小提琴更新了您的样品,请看一下

谢谢,效果很好。但是,我不喜欢任务ID必须与person模型一起返回。如果我有一千个任务与一个人相关呢?让它们和它们的关联模型一起返回在那个规模上是行不通的欢迎你们。我看不出任务ID有什么问题,因为它只是一个数字数组。还有其他加载任务的选项,您可以在负载中使用链接:{tasks:'/tasks/1'},其中tasks是您的属性,'/tasks/1'是可以加载数据的端点。看一下那把小提琴的/people/1模拟,我想我弄坏了你的第二把小提琴。多态类型都是你的个人,这很有效。但是,我不喜欢任务ID必须与person模型一起返回。如果我有一千个任务与一个人相关呢?让它们和它们的关联模型一起返回在那个规模上是行不通的欢迎你们。我看不出任务ID有什么问题,因为它只是一个数字数组。还有其他加载任务的选项,您可以在负载中使用链接:{tasks:'/tasks/1'},其中tasks是您的属性,'/tasks/1'是可以加载数据的端点。看一下那把小提琴的/people/1模拟,我想我弄坏了你的第二把小提琴。多态类型都是人
{
    tasks: [
        {
            id: 1,
            subject: 'Mytask1',
            // in the polymorphic association we need to say the type and the id
            taskable: { type: "person", id: 1 }
        },
        {
            id: 2,
            subject: 'Mytask2',
            taskable: { type: "company", id: 1 }
        }
    ]
}
{
    task: {
        id: 1,
        subject: 'Mytask1',
        // in the polymorphic association we need to say the type and the id
        taskable: { type: "person", id: 1 }
    }
}