与mixin的多态关系

GJK*_*GJK 3 ember.js ember-data

在Ember-Data中使用hasManybelongsTo关系时,是否必须指定一个类,还是可以指定mixin?例如,我有一个Attachement模型,我想链接到其他一些模型.具体来说,我想将Attachements 分配给Projects和Components.我可以使用一个混合ProjectsComponent并用它混入如像下面的逆?

App.Attachment = DS.Model.extend({
    attachedTo: DS.belongsTo('canHaveAttachments', { inverse: 'attachments'});
});

App.CanHaveAttachmentsMixin = DS.Mixin.create({});

App.Project = DS.Model.extend(App.CanHaveAttachmentsMixin, {
    attachments: DS.hasMany('attachment', { inverse: 'attachedTo' });
});
Run Code Online (Sandbox Code Playgroud)

这是Ember正式支持的吗?

小智 6

在我们使用Ember 2.4的项目中,我们有很少的实体,任务,分配和标签.任务通过多态关联进行标记分配.

这是我们的模型结构:

// app/models/task.js
import DS from 'ember-data';
import Taggable from 'app/mixins/taggable';
import Assignable from 'app/mixins/assignable';

export default DS.Model.extend(Taggable, Assignable, {  

});

// app/models/tag.js
import DS from 'ember-data';

export default DS.Model.extend({
  taggable: DS.belongsTo('taggable', { polymorphic: true }),
});

// app/models/assignment.js
import DS from 'ember-data';

export default DS.Model.extend({
  assignable: DS.belongsTo('assignable', { polymorphic: true }),
});


// app/mixins/taggable.js
import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Mixin.create({
  tag: DS.belongsTo('tag'), // you can go with hasMany here, we only have one-to-one association
});


// app/mixins/assignable.js
import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Mixin.create({
  assignment: DS.belongsTo('assignment'), // you can go with hasMany here, we only have one-to-one association
});
Run Code Online (Sandbox Code Playgroud)