J'ai trois modèles dans une application Rails: Game
représente une instance d'un jeu en cours de lecture. Player
représente une instance d'un participant à un jeu. User
représente une personne enregistrée qui peut participer à des jeux.Rails: bidirectionnel has_many: relation directe
Chaque Game
peut avoir beaucoup Players
, et chaque User
peut avoir plusieurs Players
(une seule personne peut participer à plusieurs jeux à la fois); mais chaque Player
est dans exactement un Game
, et représente précisément un User
. Par conséquent, mes relations sont les suivantes à l'heure actuelle.
class Game
has_many :players
end
class User
has_many :players
end
class Player
belongs_to :game
belongs_to :user
end
... où naturellement la table players
a game_id
et user_id
colonnes, mais games
et users
ont pas de clé étrangère.
Je voudrais également représenter le fait que chaque Game
a beaucoup Users
en jouant dedans; et chaque User
a beaucoup Games
dans lequel ils jouent. Comment puis-je faire cela? Est-il suffisant d'ajouter
class Game
has_many :users, :through => :players
end
class User
has_many :games, :through => :players
end
Je ne peux pas croire que je n'ai pas encore rencontré les guides! Je travaille essentiellement à partir de "agile web dev", qui mentionne le cas de l'article-> section-> paragraphe, mais ne couvre pas vraiment le cas "HABTM avec un vrai milieu". – Chowlett