假設有一個名爲user的activerecord類,它代表數據庫的用戶表。繼承ActiveRecord對象
但我有不同的類型,其具有
- 特殊功能的用戶
- 特殊變量
- 定製的關係(僱主的has_many公司,員工belongs_to的公司:)
而且這些用戶有很多共同的功能。所以我想要做的是爲每種不同類型的用戶創建類,然後從用戶類繼承它們。
- 用戶<的ActiveRecord :: Base的
- 僱主<用戶
- 員工<用戶
- 客戶<用戶
什麼是做這樣的事情的最好方法?
感謝
假設有一個名爲user的activerecord類,它代表數據庫的用戶表。繼承ActiveRecord對象
但我有不同的類型,其具有
而且這些用戶有很多共同的功能。所以我想要做的是爲每種不同類型的用戶創建類,然後從用戶類繼承它們。
什麼是做這樣的事情的最好方法?
感謝
很多應用程序開始了與某種形式的User
模型。隨着時間的推移,隨着不同類型的用戶涌現,對它們進行更大的區分可能是有意義的。引入了Admin
和Guest
類,作爲User
的子類。現在,共享的行爲可以存在於User
中,並且可以將子類型行爲推送到子類。但是,所有用戶數據仍可以駐留在用戶表中。
所有你需要做的就是添加一個type
列到users
表,將持有的類名實例化一個給定的行。 Active Record在從數據庫加載對象時負責實例化對象的類型。
該技術被稱爲單表繼承或STI(簡稱)。
關於STI的一篇非常好的近期文章是:http://code.alexreisner.com/articles/single-table-inheritance-in-rails.html
看一看這個線程模型子類:
完美謝謝。最後,每個班的習慣關係呢? – 2011-02-24 05:29:18