我在Rails应用程序中有三个模型:Game
表示正在玩的游戏的一个实例。 Player
代表游戏中的参与者的实例。 User
代表可以参与游戏的注册人员。Rails:双向has_many:通过关系
每个Game
可以有很多Players
,每个User
可以有很多Players
(一个人可以同时参加多个比赛);但每个Player
恰恰在一个Game
中,并且恰好代表一个User
。因此,我目前的关系如下。
class Game
has_many :players
end
class User
has_many :players
end
class Player
belongs_to :game
belongs_to :user
end
...其中自然players
表有game_id
和user_id
列,但games
和users
没有外键。
我也想表示一个事实,那就是每个Game
都有很多Users
玩在里面;并且每个User
有很多Games
他们正在玩。我该怎么做呢?是否足够添加
class Game
has_many :users, :through => :players
end
class User
has_many :games, :through => :players
end
不敢相信我之前没有遇到过指南!我基本上从“敏捷网页开发人员”开始工作,其中提到了文章 - >部分 - >段落案例,但并没有真正涵盖“真正中间人”的HABTM案例。 – Chowlett 2010-05-24 15:03:23