我有一个名为时间表的模型,其has_many
员工对象。每个计划对象运行2周,员工将在2周内分配到“轮班”。需要注意的是,每个计划都有自己的一组员工对象。
class Schedule
has_many :employees
...
end
class Employee
belongs_to :schedule
...
end
问题在于有“主”员工名单,从中选择实际在特定日程表中使用的员工。请注意,这些主要员工不属于计划。
“主”员工的属性与员工的属性基本相同。但是,一旦将它们分配到计划,主员工的属性可能会与分配的员工的属性不同。
那怎么办?
如下所示的多对多不起作用,因为员工的属性可能会在分配给特定的时间表后发生变化。
class ScheduleEmployee
belongs_to :employee
belongs_to :schedule
...
end
默认的想法是拥有 MasterEmployee 模型(带有自己的表),并且在计划创建时,这用于为新创建的计划:
class MasterEmployee
...
end
这种方法的问题在于它不是很干,因为 MasterEmployee 的属性与员工基本相同。
另一个想法是只拥有员工模型,但将“主”员工视为nil Schedule 父项。这对我来说似乎很奇怪,因为感觉我正在“重载”这个模型,特别是我可能想要添加仅对 MasterEmployee 或 Employee <特有的属性/强>
STI是下一个想法,但这实际上与以前非常相似,因为你有一些员工没有父母。
还有其他想法吗?