2011-11-02 106 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

相關問題