Rails a_de nombreux par le biais d'une association singulière
-
22-07-2019 - |
Question
C’est probablement assez simple, mais je n’ai pas encore réussi à comprendre le problème.
J'ai 3 tables ... (bien plus que ça) mais dans ce scénario 3, ça compte.
Lieux Réservations et Evaluations
Place des réservations has_many
Chaque réservation a une note (parce que l'utilisateur ne note qu'une seule fois) et appartient à (a) Lieu
Notes appartiennent à (a) réservation
Ainsi, même si les réservations n'ont qu'un seul classement, les lieux ont_un grand nombre d'évaluations via les réservations, car les lieux ont également beaucoup de réservations
.mais cela ne semble pas fonctionner? Tout le reste semble l'être.
Bookings a place_id et Ratings a un booking_id, et j’ai bien réussi avec tous les autres has_many par le biais d’associations ... mais pas du has_one? Des idées? Merci
ajout: si je change les réservations en has_many: les notes ça marche ... mais les réservations n'auront jamais qu'une note par réservation ... donc cela ne semble pas être une bonne chose.
Invalid source reflection macro :has_one for has_many :ratings, :through => :bookings. Use :source to specify the source reflection.
La solution
has_many: through
ne fonctionne pas avec les relations has_one
sur le modèle de jointure; voir les tickets Rails suivants pour plus de détails:
- https://rails.lighthouseapp.com/projects/8994/fr/tickets/1149
- https://rails.lighthouseapp.com/projects/8994/tickets/2719-has_many-through-should-should-work-if-the-join-model-uses-has_one-relationship
Si possible, la meilleure solution consiste probablement à modifier vos relations de manière à ce qu'un code de réservation appartient à
un classement plutôt qu'un code has_one
.