2012-10-23 59 views
0

假設我有3個模型音樂家,開發者和醫生,每個人都有一些共同的屬性,例如姓名,姓氏,生日和電子郵件,但他們有一些特定的屬性,例如音樂家(樂器,樂隊),開發者(語言, SO)和醫生(執照,診所)。多態協會影響Rails應用程序的性能?

我的做法是這樣的:

class Person < ActiveRecord::Base 
    belongs_to :general, :polymorphic => true 
end 

class Musician < ActiveRecord::Base 
    has_one :person, :as => general 
end 

class Developer < ActiveRecord::Base 
    has_one :person, :as => general 
end 

class Doctor < ActiveRecord::Base 
    has_one :person, :as => general 
end 

的問題是,這種模型關係的影響性能,因爲多態關聯的?還是有更好的解決方案來考慮?

回答

2

是的,多態關聯確實會影響性能。有時候,積極的,有時候是消極的,都取決於你的應用程序的使用方式。

就你提到的情況而言,我不會使用多態關聯。我只需要3個模型,並在三個模型中使用常見的屬性,如姓名,姓氏,生日和電子郵件。這是更有利的,因爲如果你想找出音樂家的名字,你只需要在Musician表中進行1次數據庫調用。在多態關聯情況下,您需要在Musician表和Person表中進行2次數據庫調用。

+0

謝謝你的觀點。 – ricardohead

相關問題