1
我有一个名为people
的表格,每个person
可以是client
,manager
,accountant
或三者的任意组合。 除了people
表格中的表格外,他们每个人都有特殊的表格列。在这种情况下使用STI可以吗?
我现在在做的是在每个表格中使用person_id
......但我认为使用相同的表格和每个表格的不同模型会更简单,所以我可以管理它们分别。
我应该那样做吗?
我有一个名为people
的表格,每个person
可以是client
,manager
,accountant
或三者的任意组合。 除了people
表格中的表格外,他们每个人都有特殊的表格列。在这种情况下使用STI可以吗?
我现在在做的是在每个表格中使用person_id
......但我认为使用相同的表格和每个表格的不同模型会更简单,所以我可以管理它们分别。
我应该那样做吗?
您没有一个很好的继承层次结构,所以我不认为STI适用。例如,您如何代表一个既是(单一)继承又是经理和会计人员的人?
如果一个人只能有三个角色中的一个,那么STI可能是有意义的;但即使使用继承来实现角色也应该引发警示,你应该知道一个人最终会迟早需要多个角色(并且在交付后可能会立即变得非常重要)。
我在表中使用标志和default_scope:'t.boolean:is_client'和'default_scope where(is_client:true)''然后: 'def destroy;如果不是new_record,则为 ? update_attribute:is_client,false; 结束; 冻结; end' – Zequez