2012-09-14 191 views
1

我正在为Ruby on Rails的一个小应用程序工作,并且我对模型之间的关系有了疑问。Ruby on Rails - 模型关系

我有“团队”,这在“较量”

该表目前这个样子,虽然我可能会做一些修改比赛表互相对战。

团队:

匹配

id | team_id1 | team_id2 | result1 | result2 
1 |  2 | 3  | -1 | -1 

在这个例子中,团队ID 2次对球队ID为3的结果尚未进入,因此设置为“-1”对彼此而言。如果第2队以3:7的比分对阵第3队,则结果1将为“3”并且结果为2“7”

一队有许多比赛,一场比赛属于两队。

如何在Rails中建模关系?

回答

4

team.rb

has_many :matches 

matches.rb

belongs_to :team_one, :foreign_key => "team_id1", :class_name => "Team" 
belongs_to :team_two, :foreign_key => "team_id2", :class_name => "Team" 

在这种情况下,假设你想找到一个团队的名称和二队的从匹配对象名称做以下

match = match.find(1) 
match.team_one.name ### gives -> some-name#2 
match.team_two.name ### gives -> some-name#3 
+0

这是将class_name分配给模型并使用habtm关系的另一种解决方案吗? – dennis

+0

感谢您的回答。 我一直在控制台中玩弄它,我注意到的一件事是即使没有相应的球队给我分配给比赛的team_id 1/2,我也可以保存比赛。 例如:我可以保存team_id1设置为“5”的比赛,即使没有Team ID为5 这是故意的吗? – marius2k12