Есть ли способ очистить 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 ??
Извините за недоразумение ..