2
所以我很困惑ActiveRecord如何處理這個問題,希望有人能給我一些見解。多態關係混淆
我有一個表具有多態關係。我們將它稱爲表格選擇。在那裏我定義了:
belongs_to :chooseable, polymorphic: true
我有兩個模型,讓我們打電話一部電影,其他的戲劇。在那裏,我有:has_many :choices as: chooseable, dependent: destroy
與多形關係模型我有兩個範圍:
scope :with_movies, -> {
includes(:movies)
.where("chooseable_type": "Measure")
}
scope :with_shows, -> {
includes(:shows)
.where(shows: { hidden: false })
}
什麼是混亂對我來說,如果我說users.choices.with_movies,和我離開在哪裏的條件,AR不太願意跟我說的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,不起作用。
我真的不明白爲什麼第二個作用域中的where子句允許生成正確的查詢,但沒有它,它落在它的表面上。
所以因爲其他範圍具有的節目表中的WHERE子句,它知道到chooseable_type條款適用於節目表,即使它不明確告訴它?這對我來說很奇怪。 – Siraris
嘗試'puts with_shows.to_sql'來查看構建的查詢。 – mudasobwa