Я пытаюсь найти лучший способ смоделировать игру по отношению к командам.
Конечная цель - иметь возможность называть такие вещи, как:
@game.winner
@game.loser
@team.games
Первые два отношения работают, а игровое - нет. Используя has_many (см. Ниже), я получаю ERROR: column games.team_id does not exist
, с которым я обычно работал бы, используя что-то, эквивалентное :foreign_key => winner_id
, но как я могу получить его как winner_id
, так и loser_id
?
Единственный вариант создать метод в такой модели команд:
def games
won = Game.where(:winner => id)
lost = Game.where(:loser => id)
won + lost
end
Пока что я делаю:
class Game < ActiveRecord::Base
has_one :winner, class_name: "Team"
has_one :loser, class_name: "Team"
end
class Team
has_many :games
# or something that actually works
end