Rails多态关联has_many

时间:2012-11-21 03:03:05

标签: ruby-on-rails multiple-inheritance polymorphic-associations single-table-inheritance

我想创建一个运动统计网页,我可以为每位玩家存储不同的运动数据。玩家可以获得不同运动的统计数据。

我想这样做的方法是创建一个整体Stat模型,其中包含每个统计数据的基本属性,无论运动,如地点,日期,对手等。这样,每项运动都会继承自 Stat 模型 - 例如 FootballStat BasketballStat

似乎使用单表继承将证明效率非常低,因为每项运动都有非常不同的统计数据。因此,我只找到了另外两个选项:

  • 多态关联,
  • 多表继承。

在这种情况下,您认为哪一个会更有效?如何实施呢?


这就是我想要做的,也许你可以请帮助我。谢谢!

1 个答案:

答案 0 :(得分: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