让我们假设我们有一名足球运动员,这名球员只能有一两支球队,我的意思是他可能是一支俱乐部球队和/或一支国家队,或者不属于他们。在rails关系中执行此操作的最佳方法是什么?
答案 0 :(得分:2)
我会为每个团队类型创建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
等方法。
答案 1 :(得分:0)
您需要的只是:teams
表中的Players
列,它接受一串引用团队的ID。一个数字表示一个团队,两个(逗号分隔或其他)数字表示两个,没有一个表示没有。