Rails有两对多的关系

时间:2013-02-13 02:06:39

标签: ruby-on-rails migration models

我有一个问题,我以某种不满意的方式解决了。

我有一个游戏模型,在游戏中总是有两个团队参与团队模型。我通过ID team1_id和team2_id引用这些团队。从我的观点来看,每当我想要拉出整个团队记录时,我每次都要做一次查找。

我想知道是否有任何方法可以在不经过多对多关系的情况下引用这两支球队,还是唯一的方法?这几乎是一个2-Many的关系,我知道这不存在,但我想知道解决这类问题的最佳方法。

谢谢,

这是我的迁移的快照:

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 个答案:

答案 0 :(得分:3)

您设置它的方式是正确的方法。 在游戏模型上制作两个团队参考,team1和team2

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”