我目前正在尝试为体育资料建模。每位运动员对参加的每项运动都有不同的档案,记录每项运动的独特性。例如玩家鲍勃。 Bob拥有BasketballProfile和SoccerProfile。 Alice可以拥有BaseballProfile和SoccerProfile。
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等。
答案 0 :(得分:0)
因此STI本身无济于事,除非您不介意在DB行中为不使用它们的类设置空字段。
其他方法是让Profile拥有所有常见字段并拥有一个多态SportSpecificProfile(缺少更好的名称),这可以是BasketballProfile,BaseballProfile,但它们不共享表或任何东西。