[RUBY] Une table intermédiaire qui relie deux tables

Qu'est-ce qu'une table intermédiaire?

Un gars pratique qui prend en charge la table lorsque les deux tables que vous souhaitez associer ont une relation «plusieurs à plusieurs».

Exemple concret

Quand vous pensez à LINE, un utilisateur appartient à plusieurs groupes. De plus, de nombreux utilisateurs sont invités à rejoindre un groupe. À ce stade, on peut dire que l'utilisateur et le groupe ont une relation «plusieurs à plusieurs».

problème

Il est difficile d'associer une table "plusieurs à plusieurs" telle quelle.

Solution

Dans l'exemple précédent, nous avons une table entre les utilisateurs et les groupes qui enregistre les combinaisons. C'est la table intermédiaire. Le but est d'enregistrer la combinaison de l'utilisateur et du groupe, et la colonne a besoin de l'ID utilisateur et de l'ID de groupe.

La description

Utilisez la "méthode has_many" et la "méthode appartient_to" pour créer une association. Du point de vue du fichier de modèle (table), déterminez s'il existe plusieurs ou des modèles uniques (tables) avec lesquels vous souhaitez établir une connexion. ex) l'utilisateur (modèle) has_many groupes Ce n'est plus une histoire anglaise.

group.rb


has_many :user_groups
has_many :users, through: :user_groups

user.rb


has_many :user_groups
has_many :groups, through: :user_groups

user_group.rb


belongs_to :user
belongs_to :group

Mise en garde

Utilisez l'option "via" pour les modèles qui ne sont pas directement connectés.

point

finalement

Je posterai sur Qiita pour la première fois de ma vie. Il est destiné à votre propre sortie, mais si vous remarquez quelque chose, veuillez le signaler.

Recommended Posts

Une table intermédiaire qui relie deux tables