Ruby on rails Rails二对多关系

Ruby on rails Rails二对多关系,ruby-on-rails,migration,models,Ruby On Rails,Migration,Models,我有一个问题,我用某种方式解决了,但并不令人满意 我有一个游戏模型,在一个游戏中,总是有两个团队参与其中,这是团队模型的一部分。我通过ids team1\u id和team2\u id引用这些团队。从我的观点来看,每当我想获取整个团队记录时,我每次都必须进行查找 我想知道是否有任何方法可以在不经过多对多关系的情况下引用这两个团队,或者这是唯一的方法?这几乎是一种两人的关系,我知道这是不存在的,但我想知道解决这类问题的最佳方法 谢谢, 这是我的迁移的快照: create_table :games

我有一个问题,我用某种方式解决了,但并不令人满意

我有一个游戏模型,在一个游戏中,总是有两个团队参与其中,这是团队模型的一部分。我通过ids team1\u id和team2\u id引用这些团队。从我的观点来看,每当我想获取整个团队记录时,我每次都必须进行查找

我想知道是否有任何方法可以在不经过多对多关系的情况下引用这两个团队,或者这是唯一的方法?这几乎是一种两人的关系,我知道这是不存在的,但我想知道解决这类问题的最佳方法

谢谢,

这是我的迁移的快照:

create_table :games do |t|
  t.datetime "time"
  t.integer "team1_id"
  t.integer "team2_id"


create_table :teams do |t|
  t.references :city
  t.references :user
  t.string "name", :default => "", :null => false  

您设置它的方式是正确的。 在游戏模型上,创建两个团队参考,团队1和团队2

class Game 
  belongs_to :team1, class_name: 'Team'
  belongs_to :team2, class_name: 'Team'
end
然后,您可以在游戏实例中将team1称为team2,它将为您拉动团队

game = Game.first
game.team1
game.team2

或者,您可以从游戏模型中删除team1和team2 id,并创建一个包含游戏和团队的联接表,您可以将其称为“Game.teams”

有时,通过模型而不仅仅是表来考虑这些事情会更好。发布你的模型…我的模型中没有团队和游戏之间的任何联系。如果我需要连接,应该是什么?属于:游戏两次?我认为这行不通。是的,最好在你的模型中建立连接。但我想已经有答案了。