在Rails中建模游戏匹配的好方法?

我正在尝试在Rails中建立一种匹配类型的模型。 比赛需要跟踪以下内容:

  • 两位球员
  • 获胜者,冠军

没有分数或类似的东西。 我可以看到这样做与玩家有3个独立的has_one关系,但这对我来说似乎很骇人听闻。 有没有更好的方法来解决这个问题?

这两个领域怎么样:

 class GameMatch < ActiveRecord::Base belongs_to :winner, :class_name => 'Player' belongs_to :loser, :class_name => 'Player' end 

如果你需要在游戏完成之前将GameMatch输入系统,你必须有三个字段,但你可以像这样详细说明:

 class GameMatch < ActiveRecord::Base belongs_to :home_player, :class_name => 'Player' belongs_to :away_player, :class_name => 'Player' def winner self[:home_won] ? home_player : away_player end def winner=(player) self[:home_won] = player == home_player end end 

当然,你必须在那里进行一些处理,以确保胜利者参加比赛并且不是决定胜利的旁观者。