Итак, я смущен тем, как 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, и я оставляю вне chooseable_type, где состояние, AR брусьев на меня и говорит:
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 во втором поле позволяет генерировать правильный запрос, но без него он падает на его лицо.
Так, потому что другая сфера имеет где положение для таблицы, он знает, чтобы применить пункт chooseable_type к таблице, даже если он не прямо сказать это? Это так странно для меня. – Siraris
Попробуйте 'puts with_shows.to_sql', чтобы увидеть построенный запрос. – mudasobwa