Я не очень хорошо знаю Ruby или ваш SQL-фреймворк, но я вижу, что запрос, который вы запускаете из своего кода Ruby, не совпадает с литеральным запросом, который работает. Попробуйте эту версию, которая помещает true
и false
в одинарные кавычки.
Department.first.users.joins(:user_departments).select("users.*, CASE WHEN user_departments.responsible = 1 THEN 'true' ELSE 'false' END AS responsible")
Если в вашей базе данных SQL нет ключевых слов true
или false
, то ваша текущая версия может интерпретироваться как ссылка на столбец с именем true
или false
.
Для краткого учебника по SQL строковые литералы обычно следует помещать в одинарные кавычки, а не двойные кавычки. Двойные кавычки предназначены для идентификаторов, таких как имена столбцов и таблиц. И true
или false
сами по себе как литералы имеют смысл только в том случае, если ваша база данных SQL поддерживает их как ключевые слова.