Rails has_many attraverso un'associazione singolare
-
22-07-2019 - |
Domanda
Probabilmente è abbastanza semplice ma non sono ancora riuscito a risolvere il problema.
Ho 3 tabelle ... (ben più di così) ma in questo scenario 3 è importante.
Luoghi Prenotazioni e Valutazioni
Luoghi has_molte prenotazioni
Ogni prenotazione ha_una valutazione (perché l'utente valuta una sola volta) e appartiene_a (a) Luogo
Classificazioni appartengono a (a) Prenotazioni
Quindi, anche se le prenotazioni hanno una sola valutazione, i posti hanno molte valutazioni in quanto le prenotazioni hanno anche molte prenotazioni
ma questo non sembra funzionare? Tutto il resto sembra.
Le prenotazioni hanno place_id e le valutazioni hanno un booking_id, e ho avuto successo con tutti gli altri has_many attraverso le associazioni ... ma non l'ha_one? Qualche idea? Grazie
aggiunta: se cambio le prenotazioni in has_many: le valutazioni funzionano ... ma le prenotazioni avranno sempre e solo una valutazione per prenotazione ... quindi questa non sembra una buona cosa.
Invalid source reflection macro :has_one for has_many :ratings, :through => :bookings. Use :source to specify the source reflection.
Soluzione
has_many: through
non funziona con le relazioni has_one
sul modello di join; vedere i seguenti biglietti Rails per i dettagli:
- https://rails.lighthouseapp.com/projects/8994/tickets/1149
- https://rails.lighthouseapp.com/projects/8994/tickets/2719-has_many-through-should-work-if-the-join-model-uses-has_one-relationship
Se possibile, la soluzione migliore è probabilmente quella di modificare le tue relazioni in modo che un di prenotazione appartenga a
un rating anziché abbia_one
.