У меня есть массив ID, который я хотел бы сохранить, а затем удалить остальные, у нас есть 3 типа пользователей, Admins
, Investors
и Students
. Список, который у меня есть, для Students
id, поэтому я хотел бы удалить все.Rails where.not с несколькими аргументами
Если я пытаюсь запустить этот
User.where.not(id: GOOD_LIST).count(:all)
я буду получать 15k записи. но если я попробую добавить дополнительное условие
User.where.not(id: GOOD_LIST).where(type: "Student").count(:all)
or
User.where.not('id IN ? AND type = ?', GOOD_LIST, "Student").count(:all)
Он вернет 0 записей.
Я попытался просто используя метод, где
User.where('id NOT IN ?', GOOD_LIST).where(type: "Student").count(:all)
но получил следующее сообщение об ошибке
(10.7ms) SELECT COUNT(*) FROM "users" WHERE "users"."type" = 'Student' AND (id NOT IN 39999,40000,40001,40002,40003,40004,40005,40006,40007,40008)
PG::SyntaxError: ERROR: syntax error at or near "39999"
LINE 1: ... WHERE "users"."type" = 'student' AND (id NOT IN 39999,4000...
Что такое лучший способ сделать это?
Как насчет '.where ('id NOT IN (?)', GOOD_LIST)'? –
У вас есть этот 'User.where (" id NOT IN (?) AND type =? ", GOOD_LIST," Student "). Count' –
Кроме того, это' 'student '' или '" Student "' в дб? –