Rails has_many через единственную ассоциацию
-
22-07-2019 - |
Вопрос
Вероятно, это довольно просто, но я еще не смог разобраться в этой проблеме.
У меня есть 3 стола...(ну более того), но в этом сценарии 3 это имеет значение.
Помещения бронирования и рейтинги
Места имеет_много бронирований
Каждое бронирование имеет_один рейтинг (поскольку пользователь оценивает только один раз) и принадлежит_кому (a) Место
Рейтинги принадлежат_to (a) Бронирование
Таким образом, даже несмотря на то, что у бронирования есть только одна оценка, места имеют_много оценок за бронирования, поскольку места также имеют много бронирований.
но это, кажется, не работает?Все остальные вроде.
У Bookings есть Place_id, а у Ratings есть booking_id, и мне удалось добиться успеха со всеми остальными has_many через ассоциации...только не has_one?Есть идеи?Спасибо
добавление:если я изменю Bookings на has_many:ratings, это сработает...но у каждого бронирования будет только одна оценка...так что это не похоже на что-то хорошее.
Invalid source reflection macro :has_one for has_many :ratings, :through => :bookings. Use :source to specify the source reflection.
Решение
has_many :through
не работает с has_one
отношения по модели соединения;Подробности смотрите в следующих билетах Rails:
- 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
Если возможно, лучшим решением, вероятно, будет изменение ваших отношений, чтобы бронирование belongs_to
Рейтинг, а не has_one
Рейтинг.