Wenn Sie über Teams von Menschen sprechen, die Spieler sind, benötigen Sie möglicherweise ein zusätzliches Modell, um zwischen ALLEN Spielern und Spielteilnehmer. Spieler könnten im Laufe der Zeit kommen und gehen, aber vielleicht möchten Sie bestimmte Dinge definieren können, wie zum Beispiel welcher Spieler der Startspieler war oder welche Spieler überhaupt bei diesem Spiel waren.
So etwas wie folgt aus:
class Player < ActiveRecord::Base
has_many :game_players
has_many :games, through: :game_players
end
class Game < ActiveRecord::Base
has_many :game_players
has_many :players, through: :game_players
end
class GamePlayer < ActiveRecord::Base
belongs_to :game
belongs_to :player
def starting_player
return GamePlayer.joins(:game).merge(GamePlayer.starting).first.player
end
end
So Gameplayer nur ein paar Felder haben würde,
game_id (an integer)
player_id (an integer)
starting (a boolean)
Dann würden Sie in der Lage sein
@game.starting_player
zu sagen Und es würde zurückkehren ein einzelner Spieler, der begann
Jetzt, wenn es ein Mannschaftssport wäre, hättest du auf jeder Seite einen Startspieler, also müsstest du den "ersten" Call in der starting_player Methode entfernen, was dir ein Array von 2 Spielern geben würde. Wenn Sie in einem Player auch ein Teammodell haben, können Sie beide Teams
bekommen