Ruby on rails “创造”的最佳方式是什么;“一”;至;一个或两个“;rails模型中的关系?

Ruby on rails “创造”的最佳方式是什么;“一”;至;一个或两个“;rails模型中的关系?,ruby-on-rails,database,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Database,Ruby On Rails 3,Ruby On Rails 3.1,让我们假设我们有一个足球运动员,这个球员只能有一个或两个球队,我的意思是他可能在一个俱乐部球队和/或一个国家队,或者什么都没有。在rails关系中,最好的方法是什么?您只需要在Players表中有一个:teams列,该列接受一个指向团队的ID字符串。一个数字表示一个团队,两个(逗号分隔或其他)数字表示两个,无表示无。我将为每个团队类型创建一个关系。也许你把一个叫做俱乐部队,另一个叫做国家队。不要让这些关系成为必需的。这将实现允许玩家和团队之间存在0、1或2种关系的目标 可以通过重命名模型中的关系

让我们假设我们有一个足球运动员,这个球员只能有一个或两个球队,我的意思是他可能在一个俱乐部球队和/或一个国家队,或者什么都没有。在rails关系中,最好的方法是什么?

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

我将为每个团队类型创建一个
关系。也许你把一个叫做俱乐部队,另一个叫做国家队。不要让这些关系成为必需的。这将实现允许玩家和团队之间存在0、1或2种关系的目标

可以通过重命名模型中的关系来实现这一点。例如,如果您有一个名为
footballsteam
的模型,那么您可能有两种关系:

has_one club_team, :class_name => "FootballTeam"
has_one national_team, :class_name => "FootballTeam"

如果
player
是你的球员模型的一个例子,这也会为你提供类似
player.club\u team
player.national\u team
的方法。

太好了,你的意思是我应该创建两个模型,国家队和club\u team,对吗?。但它们有着完全相同的属性和行为。我应该实现它们吗?实际上不需要创建两个模型。两支球队都可以是“足球队”模式的实例。如果两种类型的团队具有相同的属性和行为,那么实现两次将违反不重复自己的枯燥原则。您费心重命名关联的全部原因是,当它们实际上是同一模型的实例时,您可以用不同的名称引用它们。请再问一个问题:),我如何在数据库级别执行此操作?我指的是数据库中的关系?在
玩家表中需要俱乐部队id和国家队id。但是数据库插入和查询将非常困难,我认为在数据库世界中不建议这样做。