2010-04-06 101 views
1

我試圖構建一個具有不同類型用戶的應用程序,我使用authlogic進行用戶身份驗證。Ruby on rails with different user types

因此,我有一個用戶模型,它具有authlogic所需的領域來發揮它的魔力。我現在想添加幾個不同的模型來描述不同類型用戶的額外字段。如果用戶註冊,他會選擇他的用戶類型,當他註冊完成後,他將能夠添加特定於他的用戶模型的信息。

這樣做的最好方法是什麼?我目前正在研究多態模型,但我不確定這是最佳路線。任何幫助將不勝感激,謝謝。

回答

5

您可以創建不同的profile表格,並將配置文件與用戶綁定。因此,對於每種用戶類型,您可以創建一個表格並在其中存儲特定信息,並有一個user_id列指向users

class User < ActiveRecord::Base 
    has_one :type_1 
    has_one :type_2 
end 

class Type1 < ActiveRecord::Base 
    belongs_to :user 
end 

class Type2 < ActiveRecord::Base 
    belongs_to :user 
end 

現在這不是非常乾燥,並且如果您不斷添加用戶類型可能會導致問題。所以你可以研究多態。

對於多態性,users表將定義用戶的類型(profileable_idprofileable_type)。因此,像這樣:

class User < ActiveRecord::Base 
    belongs_to :profileable, :polymorphic => true 
end 

class Type1 < ActiveRecord::Base 
    has_one :user, :as => :profileable 
end 

class Type2 < ActiveRecord::Base 
    has_one :user, :as => :profileable 
end 

再有就是STI的用戶類型的第三個選項(單表繼承)。但是,如果用戶類型字段顯着不同,那麼這不會很好地擴展。

+0

謝謝,那差不多就是我做了關於多態,似乎還好吧工作,問題是,雖然我不能爲我的生活弄清楚如何處理用戶選擇其用戶類型的下拉菜單,我該如何鏈接,以便模型正常工作? – Pallinder 2010-04-06 19:12:20

+0

這是一個完全不同的問題:)但我會在控制器中手動執行。在可用類型中使用'select_tag',然後在create/update方法中檢查param,使用適當的類型創建/更新並保存。 – 2010-04-06 19:18:21

+0

非常感謝,我認爲這是做到這一點的方法,但後來我認爲可能會有一種很好的「高難度」方法來做到這一點嘿嘿 – Pallinder 2010-04-06 19:40:12