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