Mam trudności ze zdobyciem listy gier uczestniczących w hierarchicznym związku macierzystym, gdy zaimplementowanych jest wiele kluczy obcych w relacji środek.Jak uzyskać listę ze złożonego aktywnego rekordu, którego wiele dotyczyło z podzbioru dalszych obiektów?
Biorąc League Object NFC
, znaleźć wszystkie jego grze obiektów [G1,G3,G4]
# id :integer not null, primary key
# name :string
class League
has_many :teams
# has_many :games, :through => :teams (Is there some way to do this?)
end
# id :integer not null, primary key
# team_name :string
# league_id :integer
class Team
belongs_to :league
has_many :home_games, :foreign_key => team_a_id, :source => :game
has_many :away_games, :foreign_key => team_b_id, :source => :game
end
# id :integer not null, primary key
# game_name :string
# team_a_id :integer not null
# team_b_id :integer not null
class Game
belongs_to :home_team, :class_name => Team
belongs_to :away_team, :class_name => Team
end
Przykłady danych:
LEAGUE - TEAM - GAME
---------------------------------
AFC -
PATRIOTS -
Home Away
G1(PATRIOTS vs DALLAS)
G2(PATRIOTS vs PITTSBURG)
PITTSBURG -
G2(PATRIOTS vs PITTSBURG)
NFC -
DALLAS -
G1(PATRIOTS vs DALLAS)
G3(DALLAS vs GREENBAY)
G4(DALLAS vs SEATTLE)
GREENBAY
G3(DALLAS vs GREENBAY)
SEATTLE
G4(DALLAS vs SEATTLE)
Odpowiedź będzie zawierać odpowiedzi zgodnej Szyny 4. Szczególną uwagę można odnieść do odpowiedzi w systemie RAILS 5, jeśli alternatywa Rails 4 jest bardzo nieefektywna.
nfc = League.where(name: 'NFC').first
# <answer>
puts nfc.games
## array containing objects [G1,G2,G3]
Wyzwaniem IM, który jest z home_team
/away_team
i łączenie danych z klawiszy zagranicznych.
Gorąco zachęcam do wyjaśnienia pytania. Wydaje się, że pytasz o dwie osobne rzeczy: "Jak uzyskać listę lig zaangażowanych w podzbiór gier" i jak "Znajdź wszystkie gry z zespołami NFC". Nie wyjaśnisz, jakie kryteria tworzy Zespół "NFC", a zamiast tego pokazujesz przykład sprawdzania dla Lig nazwanych "NFC". – coreyward
Mam nadzieję, że zostało to wyjaśnione. – shadowbq
Łatwiej byłoby po prostu wymienić gry zespołu w jednym skojarzeniu, a następnie "home" jako wartość boolowską. Tj .: Zespół 'has_many: games' - Home games to' games.where (home: true) ' –