J'ai un modèle d'un club où je veux modéliser les deux entités Réunion et membre.Comment faire plusieurs plusieurs à plusieurs relations entre les deux mêmes tables
Il existe cependant deux relations plusieurs-à-plusieurs entre ces entités, car pour toute réunion, un membre peut être un orateur ou un invité. Maintenant, je suis un penseur OO, donc je créerais normalement les deux classes et chacune aurait deux tableaux de l'autre à l'intérieur, mais les rails me font penser un peu plus centré sur les données ici, alors je réalise que je dois briser ces M2M les relations avec les tables jointes Les conférenciers et les invités que j'ai fait, mais maintenant j'ai de la difficulté à décrire les relations dans les modèles.
Les deux modèles de tables de jointure ont "belongs_to: meeting" et "belongs_to: member" et je pense que cela devrait suffire.
Cependant, je ne suis pas sûr de la réunion et des modèles membres.
Chacun a "has_many: les clients" et "has_many: haut-parleurs", mais je ne suis pas sûr si je veux aussi aller: has_many: membres,: par =>: invités has_many: membres,: à travers => : haut-parleurs
Mais je soupçonne que c'est comme déclarer deux "membres" qui vont se heurter.
J'ai aussi pensé à: has_many: invités,: par =>: invités has_many: haut-parleurs,: à travers =>: haut-parleurs
Est-ce que du sens? Comment ActiveRecord sait-il qu'ils sont en fait des membres?
J'ai trouvé des tas d'exemples de relations m2m polymorphes et de relations m2m où 1 table se référence, mais aucun bon exemple pour m'aider à moduler cette situation où deux tables séparées ont deux relations m2m différentes.
Quelqu'un a-t-il des conseils?
Merci pour votre réponse. J'ai essayé cela, bien que: class_name n'est pas supporté avec: through, using: source fonctionne. Maintenant, j'ai juste besoin de lutter avec les formes, les contrôleurs, les routeurs, etc. Je ne suis pas sûr si je veux utiliser un contrôleur de membre, ou les contrôleurs Invité et Président. La forme que j'ai maintenant recherche un contrôleur de membre, donc je vais essayer d'abord ... – Kurt
Oh, c'est vrai, désolé. Je vais éditer la réponse pour les futurs lecteurs. Pour ce que ça vaut, je concevrais probablement cela comme 'has_many: members,: through =>: registrations' et' has_many: speakers,: through =>: speaker_registrations,: source => 'Member'' – mckeed