1

我想創建一個體育統計網頁,我可以爲每個球員存儲不同的體育數據。玩家可以擁有來自不同運動的統計數據。Rails多態關聯has_many

我想這樣做的方式是創建一個包含每個屬性的基本屬性的整體Stat模型,不管運動如地點,日期,對手等。這樣,每個運動將繼承模型 - 如FootballStatBasketballStat

似乎使用單表繼承將被證明是非常低效的,因爲每項運動都有非常不同的統計數據。因此,我只發現了其他兩個選項:

  • 態關聯,並
  • 多表繼承。

在這種情況下你認爲哪一個更有效?那麼如何實施呢?


這就是我想要做的,也許你可以請幫助我。謝謝!

回答

1

多態協會肯定是要走的路。你可以按如下方式實現它。

Class Stat 
    belongs_to :sportable, 
    belongs_to :player 
end 

Class Sport1 
    has_many :stats, :as => :sportable 
    # various attributes for sport1 
end 

Class Sport2 
    has_many :stats, :as => :sportable 
    # various attributes for sport2 
end 

Class Player 
    has_many :stats 
end 
+0

感謝您的快速響應。這看起來比我想象的簡單得多。我不明白的唯一部分是你在哪裏定義了Sportable類,它的功能究竟是什麼?謝謝 – amb110395

+0

sportable不是一個類,它只是一個常用的名稱,你可以用它來稱爲父級體育類的stat。例如@ stat.sportable將返回該屬性所屬的特定端口類。在您統計類的遷移中,您需要添加到字段1)sportable_id 2)sportable_type。 sportable_type包含Stat所屬的類(例如Sport1)的名稱。 –

+0

謝謝。我會試試這個 – amb110395