У меня есть проект с 2 моделями, Game и Team. В Игре участвуют две Команды, команда гостей и команда хозяев. Существует определенное количество команд (больше не создаются), и каждая из них будет принадлежать многим играм.
Я хочу иметь возможность использовать @game.home_team.name вместо @game.teams.find_by_id(@game.home_team_id).first.name. Я не уверен, что смогу сделать это без создания двух дополнительных моделей, AwayTeam и HomeTeam, которые будут иметь те же столбцы, что и Team, за исключением дополнительного :game_id и, возможно, :type.
В настоящее время отношения HABTM между играми и командами работают, но у меня нет возможности превратить команду в домашнюю или выездную команду, если она принадлежит игре.
game.rb
class Game < ActiveRecord::Base
has_and_belongs_to_many :teams
has_one :away_team, -> {where(type:'away')}, class_name: 'Team'
has_one :home_team, -> {where(type:'home')}, class_name: 'Team'
end
team.rb
class Team < ActiveRecord::Base
has_and_belongs_to_many :games
# has_many :away_teams
# has_many :home_teams
end
###
# class AwayTeam < Team
# belongs_to :game
# belongs_to :team
# end
# class HomeTeam < Team
# belongs_to :game
# belongs_to :team
# end
games_controller.rb
def create
@game = Game.create(game_params)
@game.teams << Team.find_all_by_id([ @game.away_team_id, @game.home_team_id ])
@game.away_team = @game.teams.find_by_id(@game.away_team_id)
@game.home_team = @game.teams.find_by_id(@game.home_team_id)
@game.save
end
Любая помощь будет очень признательна, спасибо.