Вопрос

Вероятно, это довольно просто, но я еще не смог разобраться в этой проблеме.

У меня есть 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:

Если возможно, лучшим решением, вероятно, будет изменение ваших отношений, чтобы бронирование belongs_to Рейтинг, а не has_one Рейтинг.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top