模型上具有相同类型的多个hasMany关系

时间:2016-04-09 03:46:31

标签: ember.js ember-data

我正在使用一个具有多个相同类型的hasMany关系但具有不同属性名称的类。例如:

export default DS.Model.extend({
  sunday: DS.hasMany('scheduled-time'),
  monday: DS.hasMany('scheduled-time'),
  tuesday: DS.hasMany('scheduled-time'),
  wednesday: DS.hasMany('scheduled-time'),
  thursday: DS.hasMany('scheduled-time'),
  friday: DS.hasMany('scheduled-time'),
  saturday: DS.hasMany('scheduled-time'),
  ...

这可能表示类似“周一,员工X计划在上午9点到12点工作(一个scheduled-time实例”),再从下午1点到下午5点(另一个scheduled-time实例)。“对于一周中的每一天,员工可以有零个,一个或多个预定时间。

关系的另一面可能如下:

export default DS.Model.extend({
  start_time: DS.attr('string'),
  end_time: DS.attr('string'),
  schedule: DS.belongsTo('schedule'),
  ...

然而,Ember数据似乎不允许这样做,并且说我需要明确说明belongsTo的反转(详见此处:https://guides.emberjs.com/v2.4.0/models/relationships/)。这就是我认为我的数据模型被破坏的地方:我想不出任何合乎逻辑的方式来表示给定的预定时间属于一周中的任何一天。这个数据模型坏了吗?我感觉不是在一周的个别日子里组织所有scheduled-time,而是应该在一个属性下集体归属,并且可能一周中的几天是计算属性,而是做了一些过滤而不是

这种关系是否可行,或者我应该进行一些重构?

1 个答案:

答案 0 :(得分:0)

shiftscheduled-time,员工可以hasMany shiftsshift A在星期日,而shift B也在星期日这一事实,但shift C在星期二也不会产生影响。

// models/employee.js
export default DS.Model.extend({
  shifts: DS.hasMany('scheduled-time')
});