Rails, как очистить SQL в find_by_sql

Есть ли способ очистить sql в методе rails find_by_sql ?

Я пробовал это решение: Ruby on Rails: как очистить строку для SQL, если не используется find?

Но это не удается на

Model.execute_sql("Update users set active = 0 where id = 2")

Выдает ошибку, но выполняется код sql, и пользователь с ID 2 теперь имеет отключенную учетную запись .

Простой find_by_sql также не работает:

Model.find_by_sql("UPDATE user set active = 0 where id = 1")
# => code executed, user with id 1 have now ban

Изменить:

Ну, мой клиент попросил сделать эту функцию (выбор по sql) в панели администратора, чтобы сделать какой-то сложный запрос (соединения, специальные условия и т. д.). Так что я действительно хочу найти это find_by_sql.

Второе редактирование:

Я хочу добиться того, чтобы «злой» код SQL не выполнялся.

В панели администратора вы можете ввести запрос -> Обновить пользователей установите admin = true, где id = 232 , и я хочу заблокировать любую SQL-команду UPDATE / DROP / ALTER. Просто хочу знать, что здесь вы можете выполнить ТОЛЬКО SELECT.

После некоторых попыток я пришел к выводу, что sanitize_sql_array , к сожалению, не делайте этого.

Есть ли способ сделать это в Rails ??

Извините за недоразумение ..

16
задан Community 23 May 2017 в 12:17
поделиться