使用不同的DB列继承相似的模型

时间:2016-06-22 18:05:32

标签: ruby-on-rails

我目前正在尝试为体育资料建模。每位运动员对参加的每项运动都有不同的档案,记录每项运动的独特性。例如玩家鲍勃。 Bob拥有BasketballProfile和SoccerProfile。 Alice可以拥有BaseballProfile和SoccerProfile。




Profiles


batting_hand,pitching_hand,shooting_hand,dunk,只是我想添加的一些示例属性。

我已经查看了单表继承和多态关联,但由于数据库中将存在空的数量,它们似乎不适用于具有其他属性的模型。

class Player< ActiveRecord::Base
    has_and_belongs_to_many :Profiles
end

class Profile< ActiveRecord::Base
   belongs_to :Player
end

class BasketballProfile < Profile
end

class BaseballProfile < Profile
end

您如何为相似但具有其他数据库列的模型建模?你可以用额外的DB列继承类似的模型吗? BasketballProfile和BaseballProfile都有位置但是一个有batting_hand而另一个有扣篮。

我应该制作不同的独立模型BaseballProfile,SoccerProfile,BasketballProfile等。

1 个答案:

答案 0 :(得分:0)

因此STI本身无济于事,除非您不介意在DB行中为不使用它们的类设置空字段。

其他方法是让Profile拥有所有常见字段并拥有一个多态SportSpecificProfile(缺少更好的名称),这可以是BasketballProfile,BaseballProfile,但它们不共享表或任何东西。