我正在处理一个类,该类具有多个相同类型的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
都组织在一周中的各个日子里,不如把它们真正地集中在一个属性下,也许一周的日子会是经过计算的属性,它会进行一些过滤。
这种类型的关系可能吗,或者我应该进行一些重构?
shift
是scheduled-time
,员工可以hasMany
shifts
。事实上,shift A
在周日,shift B
也在周日,但shift C
在周二并没有什么区别。
// models/employee.js
export default DS.Model.extend({
shifts: DS.hasMany('scheduled-time')
});