Как насчет всего двух полей:
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
Конечно, вам нужно будет немного поработать, чтобы убедиться, что победитель сыграл в игру и не был наблюдателем, который решил претендовать на победу.