2014-02-26 35 views
0

我只想問我做的事對我正在製作的應用程序(初級開發人員級別)是否合理。可以使用Polymorphic Association來顯示不同類型的用戶嗎?

基本上應用程序涉及醫生,客戶和管理員(現在)。每個人都有他們自己的個人資料頁面,可以做不同的事情。我也有註冊過程的用戶類。

我選擇PA的理由是每個人都以用戶身份登錄,我想將「作爲醫生」的東西與「作爲用戶」的東西分開。這是一個好主意嗎?

class User < ActiveRecord::Base 
    rolify 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    belongs_to :profile, polymorphic: true 

end 

class Doctor < ActiveRecord::Base 
    has_one :user, as: :profile, dependent: :destroy 
    accepts_nested_attributes_for :user 

    ## doctor stuff 

    delegate :email, :password, to: :user 
end 

class Client < ActiveRecord::Base 
    has_one :user, as: :profile, dependent: :destroy 
    accepts_nested_attributes_for :user 

    ## client stuff 

    delegate :email, :password, to: :user 
end 

回答

0

對我來說,從用戶類型信息中分離出人員類型信息(醫生,客戶端等)看起來非常合理。您可能想考慮命名關聯人員而不是簡介,但這並不重要。是的,我認爲多態關聯可能會達到你想要的。

+0

謝謝@Coenwulf。我大約80%相信這是要走的路,但在閱讀[Enterprise Rails](http://enterpriserails.chak.org/full-text/chapter-10-multiple-table-inheritance)時,我很擔心關於數據庫的完整性。例如,我可以創建一個沒有電子郵件地址的醫生,這對我來說太可怕了。這是可以解決的嗎? –

+0

它看起來像你在用戶上存儲電子郵件。這是一個問題,因爲用戶_必須有一個電子郵件地址,但醫生不需要一個?如果是這樣,是因爲醫生不一定是用戶?你能提供關於這種情況的更多細節,或者你會得到什麼驗證? – Coenwulf

+0

哦,我還沒有驗證,我剛剛得到了工作。猜猜我應該把驗證,然後再次檢查問題。是的,所有的醫生都是用戶,並且需要一個電子郵件地址。 –

相關問題