Прежде всего, ответьте на простой случай: используя вашу модель Game
, мы можем легко перечислить игры, в которые команда играет дома, и выездные игры (надеюсь, это правильный термин). Я полагаю, из вашей структуры данных, что команда 1 ведет игру. Таким образом, мы получаем что-то вроде:
class Team
has_many :home_games, class_name: 'Game', foreign_key: :team_one
has_many :away_games, class_name: 'Game', foreign_key: :team_two
end
Но для перечисления всех игр команды мы можем сделать несколько вещей:
Наименее эффективный, но очень простой /Наивная реализация:
def games
home_games + away_games
end
, которая будет извлекать все домашние и выездные игры, конвертировать в массивы и добавлять / объединять массивы, НО впоследствии невозможно добавить where
, сортировку и т.д. ...
Лучше использовать базу данных
def games
Game.where("team_one_id = ? or team_two_id = ?", self.id, self.id)
end
(в rails 5 вы также можете записать это как Game.where(team_one_id: self.id).or(Game.where(team_two_id: self.id))
, но я все же предпочитаю старый способ как более читаемый и менее набираемый)
Тогда вы сможете написать что-то вроде
@team = Team.find(params[:id])
@games = @team.games.order(:game_time)