Есть ли способ очистки 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 не выполнялся.
В административной панели вы можете ввести запрос -> Update users set admin = true where id = 232
, и я хочу заблокировать любую команду SQL UPDATE / DROP / ALTER.Просто хочу знать, что здесь вы можете ТОЛЬКО выполнить SELECT.
После некоторых попыток я заключаю, что sanitize_sql_array
, к сожалению, не делайте этого.
Есть ли способ сделать это в Rails??
Извините за путаницу ..