有没有办法在 rails 方法中清理 sql find_by_sql
?
我试过这个解决方案: Ruby on Rails: How to sanitize a string for SQL when not using 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 代码。
在管理面板中,您可以键入 query ->Update users set admin = true where id = 232
我想阻止任何 UPDATE / DROP / ALTER SQL 命令。只想知道,在这里你只能执行 SELECT。
经过一些尝试,我很sanitize_sql_array
遗憾地得出结论,不要那样做。
有没有办法在 Rails 中做到这一点?
对困惑感到抱歉..