【发布时间】:2012-11-25 23:05:10
【问题描述】:
假设我们有一名足球运动员,该球员只能拥有一两支球队,我的意思是他可能在俱乐部球队和/或国家队,或者什么都不是。在 Rails 关系中执行此操作的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails database ruby-on-rails-3 ruby-on-rails-3.1
假设我们有一名足球运动员,该球员只能拥有一两支球队,我的意思是他可能在俱乐部球队和/或国家队,或者什么都不是。在 Rails 关系中执行此操作的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails database ruby-on-rails-3 ruby-on-rails-3.1
我将为每种团队类型创建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 是您的播放器模型的一个实例,这还将为您提供player.club_team 和player.national_team 之类的方法。
【讨论】:
Players 表中需要一个club_team_id 和一个national_team_id。
您只需要Players 表中的:teams 列,该列接受一串代表团队的ID。一个数字表示一个团队,两个(逗号分隔或其他)数字表示两个,无表示没有。
【讨论】: