Сбой при поиске записи, имеющей запись отношения: PG :: UndefinedTable: ОШИБКА: отсутствует запись предложения FROM для таблицы - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть модель Activity, которая has_one ComputedActivity.Я хочу найти все действия, которые завершили обработку, то есть они имеют вычисленную активность в БД.

Я написал этот запрос

Activity.joins(:computed_activity).where.not(computed_activity: {id: nil})

И это дает мне ошибку

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "computed_activity")
LINE 1: ...tivities"."activity_id" = "activities"."id" WHERE "computed_...
                                                             ^
: SELECT  "activities".* FROM "activities" INNER JOIN "computed_activities" ON "computed_activities"."activity_id" = "activities"."id" WHERE "computed_activity"."id" IS NOT NULL LIMIT $1

Что вызывает эту ошибку и как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

ActiveRecord :: StatementInvalid (PG :: UndefinedTable: ERROR: отсутствует запись в предложении FROM для таблицы "computed_activity") LINE 1: ... tivities "." Activity_id "=" activity "." Id "WHERE"computed _...

В предложении where должно быть имя таблицы , а не название модели .Так что просто измените

Activity.joins(:computed_activity).where.not(computed_activity: {id: nil})

на

Activity.joins(:computed_activity).where.not(computed_activities: {id: nil})
0 голосов
/ 20 сентября 2018

table name должно быть во множественном числе там, где условие, т.е.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...