我正在尝试在Rails中建立一种匹配类型的模型。比赛需要跟踪以下内容:
没有分数或类似的东西。我可以看到这与玩家有3个独立的has_one
关系,但这对我来说似乎很骇人听闻。有没有更好的方法来解决这个问题?
答案 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
当然,你必须在那里进行一些处理才能确保胜利者参加比赛并且不是决定胜利的旁观者。