1
我有两个表,Teams
和Games
。我正在尝试为这些表设置关联,但遇到一些问题。这是我的Game
模型与它的关联:has_many与多个外键关联到同一个表
# Game Model
class Game < ActiveRecord::Base
belongs_to :home_team, class_name: "Team"
belongs_to :away_team, class_name: "Team"
belongs_to :winning_team, class_name: "Team"
end
我可能这得太多,但我不知道如何设置我的Team
模型have_many游戏。
在我的团队模型的简单has_many :games
,我的测试返回以下错误:
Team Associations should have many games
Failure/Error: it { should have_many(:games) }
Expected Team to have a has_many association called games (Game does not have a team_id foreign key.)
我看到它寻找team_id
的Game
,并且因为没有team_id
它的错误。但在我的Game
表中,我有三个外键引用同一个类。那么我需要为每个home_team
,away_team
和winning_team
创建一个has_many
?
有关数据库设计的一个问题不应该包括在它的ORM或应用软件。这不是数据库设计的正确工具。 EVER!真正的数据库设计将有三张表格,包括关于游戏细节的游戏,关于团队细节的团队和团队合作伙伴关系作为多对多关联的联结表。 – HLGEM
@HLGEM这似乎不是一个关于数据库设计的问题,数据库已经以功能方式设置。问题是你可以用一个has_many参考或不参与所有三个关联。另外,为什么你建议一个连接表?在这种情况下,关于比赛的细节是两个球队的比赛,看起来像一个连接表将是矫枉过正。也许我错过了什么?我认为数据库设计是正确的。 – GoGoCarl
@GoGoCarl谢谢,我开始怀疑我的方法。是的,我正在寻找一种方法来处理has_many与单行,或作为三个单独的has_many行。 – mikeymurph77