假设我们有一个足球运动员,这个球员只能有一两支球队,我的意思是他可能在俱乐部球队和/或国家队,或者什么都没有。 在 Rails 关系中做到这一点的最佳方法是什么?
我会为每种团队类型创建has_one
关系。也许你称一个club_team
,另一个national_team
.不要使这些关系成为必需的。这将实现允许玩家和团队之间建立 0、1 或 2 关系的目标。
您可以通过重命名模型中的关系来实现此目的。例如,如果您有一个名为 FootballTeam
的模型,那么您可以有两个这样的关系:
has_one club_team, :class_name => "FootballTeam"
has_one national_team, :class_name => "FootballTeam"
这还将为你提供player.club_team
和player.national_team
等方法,如果player
是你的玩家模型的实例。
只需要在Players
表中有一个:teams
列,该列接受引用团队的 ID 字符串。一个数字表示一个团队,两个(逗号分隔或其他)数字表示两个,没有表示没有。