2011-11-02 107 views
1

我有一个名为people 的表格,每个person可以是clientmanager,accountant或三者的任意组合。 除了people表格中的表格外,他们每个人都有特殊的表格列。在这种情况下使用STI可以吗?

我现在在做的是在每个表格中使用person_id ......但我认为使用相同的表格和每个表格的不同模型会更简单,所以我可以管理它们分别。

我应该那样做吗?

回答

2

您没有一个很好的继承层次结构,所以我不认为STI适用。例如,您如何代表一个既是(单一)继承又是经理和会计人员的人?

如果一个人只能有三个角色中的一个,那么STI可能是有意义的;但即使使用继承来实现角色也应该引发警示,你应该知道一个人最终会迟早需要多个角色(并且在交付后可能会立即变得非常重要)。

+0

我在表中使用标志和default_scope:'t.boolean:is_client'和'default_scope where(is_client:true)''然后: 'def destroy;如果不是new_record,则为 ? update_attribute:is_client,false; 结束; 冻结; end' – Zequez

相关问题