Rails has_many a través de asociación singular
-
22-07-2019 - |
Pregunta
Esto es probablemente bastante simple, pero aún no he podido entender el problema.
Tengo 3 tablas ... (mucho más que eso) pero en este escenario 3 eso importa.
Lugares Reservas y Calificaciones
Lugares has_many reservas
Cada reserva tiene una calificación (porque el usuario solo califica una vez) y pertenece_a (a) Lugar
Calificaciones belong_to (a) Reservas
Entonces, aunque las reservas solo tienen una calificación, los lugares tienen muchas calificaciones a través de las reservas, ya que los lugares también tienen muchas reservas
pero esto no parece funcionar? Todo lo demás parece.
Las reservas tienen place_id y las calificaciones tienen un booking_id, y he tenido éxito con todos los demás has_many a través de asociaciones ... ¿pero no has_one? ¿Algunas ideas? Gracias
además: si cambio Reservas a has_many: calificaciones funciona ... pero las reservas solo tendrán una calificación por reserva ... así que esto no parece algo bueno.
Invalid source reflection macro :has_one for has_many :ratings, :through => :bookings. Use :source to specify the source reflection.
Solución
has_many: through
no funciona con las relaciones has_one
en el modelo de unión; vea los siguientes boletos de Rails para más detalles:
- 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
Si es posible, la mejor solución es probablemente modificar sus relaciones para que una Reserva pertenece_a
una Calificación en lugar de has_one
Calificación.