Хороший подход к моделированию игрового матча в Rails? - PullRequest
1 голос
/ 01 апреля 2011

Я пытаюсь создать модель для типа соответствия в Rails. Матч должен отслеживать следующее:

  • Два игрока
  • Победитель

нет очков или что-то в этом роде. Я мог видеть это как 3 отдельных has_one отношения с игроком, но это кажется мне хаком Есть ли лучший способ приблизиться к этому?

1 Ответ

4 голосов
/ 01 апреля 2011

Как насчет всего двух полей:

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

Конечно, вам нужно будет немного поработать, чтобы убедиться, что победитель сыграл в игру и не был наблюдателем, который решил претендовать на победу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...