Rails has_many через единственное объединение - PullRequest
0 голосов
/ 01 декабря 2009

Это, вероятно, довольно просто, но я еще не смог обернуть голову вокруг проблемы.

У меня есть 3 таблицы ... (что более важно), но в этом сценарии 3 это имеет значение.

Места Бронирование и Рейтинги

Места есть_ много заказов

Каждое бронирование имеет один рейтинг (потому что пользователь оценивает только один раз) и принадлежит_ (а) Место

Рейтинги принадлежат_ (а) Бронирование

Таким образом, несмотря на то, что у бронирований только один рейтинг, места имеют рейтинги has_many через бронирования, поскольку у мест также много бронирований

но это не похоже на работу? Все остальные кажутся.

Бронирования имеют place_id, а у Рейтингов - booking_id, и я успешно справлялся со всеми другими has_many через ассоциации ... только не has_one? Есть идеи? Спасибо

дополнение: если я изменю Бронирования на has_many: рейтинги работают, но у бронирований будет только один рейтинг на бронирование ... так что это не очень хорошая вещь.

Invalid source reflection macro :has_one for has_many :ratings, :through => :bookings.  Use :source to specify the source reflection.

1 Ответ

1 голос
/ 01 декабря 2009

has_many :through не работает с has_one отношениями в модели соединения; подробности смотрите в следующих билетах Rails:

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

...