Rails has_manyの特異な関連付け
-
22-07-2019 - |
質問
これはおそらく非常に簡単ですが、私はまだ問題を回避することができていません。
3つのテーブルがあります...(それ以上です)、このシナリオ3では重要です。
場所 予約と 評価
場所には多くの予約があります
各has_one評価(ユーザーが1回のみ評価するため)およびbelongs_to(a)Place
Ratings belongs_to(a)Booking
したがって、予約には1つの評価しかありませんが、場所には多くの予約もあるため、予約には予約を通じて多くの評価があります
しかし、これはうまくいかないようですか?残りはすべてそうです。
Bookingsにはplace_idがあり、Ratingsにはbooking_idがあります。他のすべてのhas_manyで関連付けを使用して成功しています。has_oneではありませんか?何か案は?ありがとう
追加:Bookingsをhas_many:ratingsに変更すると機能しますが、予約ごとに1つの評価しかありません...したがって、これは良いことではないようです。
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
可能であれば、おそらく最良の解決策は、予約が has_one
評価ではなく評価 belongs_to
になるように関係を変更することです。
所属していません StackOverflow