回答

0

當您需要將所有內容放在同一對象/表中時使用STI。與其他對象,屬性和驗證的關係可以根據對象的狀態而改變。

當對象與另一個未指定類型的對象相關時使用多態關係。請參閱#max-williams示例

1

根據我的經驗,多態關係=好,STI = PainInTheArse。

我從來沒有見過一個不會變成混亂混亂的STI示例。

如果你有與一個或多個其他類具有相同類型關係的不同事物,則用它們自己的表格將它們保存爲不同的東西。例如,附加文檔:您可能需要將文檔附加到許多不同類型的東西上。例如,爲此使用多態關係,稱爲「可記錄」。

Document 
    belongs_to :documentable, :polymorphic => true 
    #expects a documentable_id field (integer) and a documentable_type field (string) 

User 
    has_many :documents, :as => :documentable 

Company 
    has_many :documents, :as => :documentable