Próbuję utworzyć relację has_many through
z wieloma źródłami. Na przykład gra ma numer home_team
i away_team
, a turniej ma wiele gier.has_many through multiple sources
Jaki jest najlepszy sposób na zdobycie wszystkich drużyn w turnieju za pomocą relacji has_many through games.
Teraz mój kod wygląda następująco:
class Tournament
has_many :teams, :through => :games, :source => :home_team, :uniq => true
end
ale chcę jakiś sposób, aby działać jak:
class Tournament
has_many :teams, :through => :games, :source => [:home_team, :away_team], :uniq => true
end
EDIT: wiele do wielu relacji nie jest mój problem. Czy istnieje dobry sposób, aby wszystkie drużyny w turnieju przyjęły strukturę w następujący sposób.
class Game
has_and_belongs_to_many :tournaments
belongs_to :home_team, :class_name => Team, :foreign_key => :home_team_id
belongs_to :away_team, :class_name => Team, :foreign_key => :away_team_id
end
class Tournament
has_and_belongs_to_many :games
end
Czy istnieje sposób na wykonanie Tournament.teams
?
miał podobny problem i skończyło się zmienia mój schemat aby go obejść, ale jedna opcja Patrzyłem na to metoda z użyciem '.merge' http: // stackoverflow.com/questions/11486027/merge-results-from-two-ma-wiele-skojarzeń-z tym samym-modelem Edycja: Myśląc o tym więcej, założę się, że sposób robienia szyn jest dziedziczeniem pojedynczego stołu, gdzie w domu i gry wyjazdowe mają nadrzędną abstrakcyjną klasę 'Game', która zapewnia tabelę złączeń. Spróbuję tego następnym razem :) – thebenedict