я следующий код:Использование пустых параметров в quoted_parameters (Params)
pg = ActiveRecord::Base.connection
res = pg.execute(query % quoted_parameters(params))
Это мой pseudoquery:
select project_id from projects where client_id in (%{ids})
Это являются Титулы:
{ :ids => [] }
It отлично работает, когда в массиве идентификаторов есть фактические значения. Однако, похоже, он не способен обрабатывать пустой массив, я получаю:
ERROR: syntax error at or near ")"
Поскольку он просто помещается в пустую строку.
По умолчанию это работает отлично:
Project.where('client_id in (?)', [])
И генерирует следующий запрос:
Project Load (3.5ms) SELECT "projects".* FROM "projects" WHERE (client_id in (NULL))
Есть ли способ, чтобы получить запрос% quoted_parameters (PARAMS), чтобы создать один и тот же запрос, даже если массив пуст?
Я действительно пытаюсь вручную использовать SQL в моем приложении. Как я писал: когда я делаю это со стандартным ActiveRecord, он отлично работает, но я ищу способ сделать это с помощью ручного SQL. Пример SQL, который я написал, является, конечно, примером, а не фактическим SQL (что намного сложнее). – rept
Gotcha. Вы определили 'quoted_parameters'? Или вы ссылаетесь на него из какого-то модуля? –
Привет Дональд. Глупый я, я думал, что цитируемые_параметры были чем-то вроде activerecord, но это не так. Я использовал описанную здесь методику: http://gmile.me/raw-sql-in-a-rails-project/ и теперь вижу, что quoted_parameters - это метод. Теперь я могу это исправить, должен иметь возможность обрабатывать случай пустого массива, который в этом методе. – rept