在rails模型中创建“一个”到“一个或两个”关系的最佳方法是什么?

时间:2012-11-25 23:05:11

标签: ruby-on-rails database ruby-on-rails-3 ruby-on-rails-3.1

让我们假设我们有一名足球运动员,这名球员只能有一两支球队,我的意思是他可能是一支俱乐部球队和/或一支国家队,或者不属于他们。在rails关系中执行此操作的最佳方法是什么?

2 个答案:

答案 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_teamplayer等方法。

答案 1 :(得分:0)

您需要的只是:teams表中的Players列,它接受一串引用团队的ID。一个数字表示一个团队,两个(逗号分隔或其他)数字表示两个,没有一个表示没有。