質問

これはおそらく非常に簡単ですが、私はまだ問題を回避することができていません。

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チケットを参照してください。

可能であれば、おそらく最良の解決策は、予約が has_one 評価ではなく評価 belongs_to になるように関係を変更することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top