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

时间:2011-04-01 18:33:30

标签: ruby-on-rails model

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

  • 两名球员
  • 获胜者

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

1 个答案:

答案 0 :(得分:4)

两个领域如何:

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

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