Ошибка на Rails включает после обновления до 4.2.7 - PullRequest
0 голосов
/ 25 июня 2018

У меня есть приложение Rails, которое я обновляю с ruby ​​2.1.5 и Rails 4.0.x до Ruby 2.2.8 и Rails 4.2.7. После обновления я обнаружил, что следующий запрос больше не работает:

@courses = Course.where(active: true).joins(:course_classes).where(:course_classes => { active: true, class_type: "live"}).includes(:live_class_dates).where('live_class_dates.start_date >= ?', Date.today)

Похоже, что проблема заключается в методе "include". Я пытался заменить include на объединения, но похоже, что это игнорирует или неправильно интерпретирует последнее предложение where.

Во-первых, это проблема Ruby или Rails? И во-вторых, какие-либо предложения по запросу, чтобы заменить этот?

Заранее спасибо.

ОБНОВЛЕНИЕ: Вот полная ошибка, которую я получаю:

PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "live_class_dates"
LINE 1: ... = $2 AND "course_classes"."class_type" = $3 AND (live_class...
                                                             ^
: SELECT "courses".* FROM "courses" INNER JOIN "course_classes" ON "course_classes"."course_id" = "courses"."id" WHERE "courses"."active" = $1 AND "course_classes"."active" = $2 AND "course_classes"."class_type" = $3 AND (live_class_dates.start_date >= '2018-06-25')  ORDER BY "courses"."title" ASC

1 Ответ

0 голосов
/ 25 июня 2018

Я обнаружил, что добавление .references(:live_class_dates) к существующему запросу устранило проблему.Вот полный запрос для потомков:

@courses = Course.where(active: true).joins(:course_classes).where(:course_classes => { active: true, class_type: "live"}).includes(:live_class_dates).where('live_class_dates.start_date >= ?', Date.today).references(:live_class_dates)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...