私はActiveRecordがこれをどのように処理しているのか混乱しています。多態的な関係の混乱
私は多相関係を持つテーブルを持っています。テーブルの選択肢と呼ぶことにします。そこに私は定義した:
belongs_to :chooseable, polymorphic: true
私は2つのモデルを持っている、1つの映画を呼び出すと、他の演劇。そこでは、私が持っている:私はusers.choices.with_moviesを言うと、私は去るならば、私に混乱して何
scope :with_movies, -> {
includes(:movies)
.where("chooseable_type": "Measure")
}
scope :with_shows, -> {
includes(:shows)
.where(shows: { hidden: false })
}
される:ポリモーフィックな関係を持つモデルではhas_many :choices as: chooseable, dependent: destroy
は、私は2つのスコープを持っています条件は、ARは私をbalksと言うchooseable_typeアウト:
Unknown column 'choices.chooseable_type' in 'where clause': SELECT `movies`.* FROM `movies` WHERE `choices`.`chooseable_type` = 'Movie' AND `movies`.`id` IN (728)
はまだ、二スコープwith_showsに、私はchooseable_typeを定義する必要はありません - それが正常に動作します。さらに紛らわしいことは、where節を削除すると、with_showsもうまくいきません。
2番目のスコープのwhere句が適切なクエリを生成できる理由を理解できていません。
他のスコープには、showsテーブルのwhere句があるため、showテーブルにはchooseable_type句が適用されていることがわかります。明示的にそれに伝える?それは私にとってとても奇妙です。 – Siraris
'puts with_shows.to_sql'を実行して、作成されたクエリを見てください。 – mudasobwa