在轨道模型中创建"one"关系"one or two"的最佳方法是什么?



假设我们有一个足球运动员,这个球员只能有一两支球队,我的意思是他可能在俱乐部球队和/或国家队,或者什么都没有。 在 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_teamplayer.national_team等方法,如果player是你的玩家模型的实例。

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

最新更新