2016-05-15 10 views
0

Ich bin ein Anfänger mit Ruby auf Schienen im Moment arbeiten, versuchen, Beziehungen zwischen meinen Modellen Matches, Teams nageln.Schienen Migration für Spiele zwischen 2 Teams

Ich möchte meine Übereinstimmungen beziehen sich auf die Tabelle Teams zweimal, einmal für eine homeTeam und eine andere für awayTeam. Ich denke, meine größte Frage ist, erkläre ich Beziehungen in meinen Modellen falsch?

Im Moment kann ich nicht einmal den Namen einer Mannschaft durch ein Spiel nennen.

Ich möchte in der Lage sein, Team.matches aufzurufen, alle Spiele aufzulisten, die ein Team hat, egal ob als HomeTeam oder awayTeam aufgeführt, und eventuell die Heim- oder Auswärtsspiele für ein bestimmtes Team aufrufen kann.

Ich möchte auch Match.teams/Match.homeTeam/Match.awayTeam aufrufen können, um die Teams eines bestimmten Spiels aufzulisten.

Hier ist, was ich bisher habe:

Spiel Migration

class CreateMatches < ActiveRecord::Migration def change create_table :matches do |t| t.references :homeTeam t.references :awayTeam end end end

Spiel Modell

class Match < ActiveRecord::Base has_one :homeTeam, :class_name => 'Team' has_one :awayTeam, :class_name => 'Team' end

Team Modell

class Team < ActiveRecord::Base has_and_belongs_to_many :matches end

Vielen Dank im Voraus!

Antwort

0

Sie können es wie folgt tun:

class Match < ActiveRecord::Base 
    belongs_to :hometeam, :class_name => 'Team' 
    belongs_to :awayteam, :class_name => 'Team' 

#if you want to select all teams of a match, you can create a method 
def teams 
    Team.find(self.hometeam_id, self.awayteam_id) 
end 
end 

class Team < ActiveRecord::Base 
    has_many :home, class_name: 'Match', foreign_key: 'hometeam_id' 
    has_many :away, class_name: 'Match', foreign_key: 'awayteam_id' 
end 
+0

Kann ich meine 'Players' Tabelle zu übernehmen und die Spieler eines Match.homeTeam/Match.awayTeam nennen diese Modelle verwenden, oder muss ich zu Finde einen Weg, um die Teams auch zu Matches zu machen? Denken wie 'Match' ' has_many: Mannschaften '' has_many: Spieler durch: Mannschaften ' – DesertOctopi

+0

können Sie Spieler nennen wie diese' Match.find (your_match_id) .hometeam.players' alle Heimmannschaft finden Spieler, vorausgesetzt, Sie haben bereits die Assoziationen zwischen Spieler und Team festgelegt. – pyfl88