Rails:在没有模型或数据库连接的情况下使用sanitize_sql_for_conditions

问题描述

主要参考本文档中的方法 https://api.rubyonrails.org/classes/ActiveRecord/Sanitization/ClassMethods.html

我有一个SQL,id = :id,以及需要清理的即将出现的绑定变量的用户输入。 sanitize_sql_for_conditions非常适合我的情况。但是,似乎只能通过方法或活动的数据库连接来调用它。没有模型或数据库连接,是否可以使用sanitize_sql_*方法?我知道ActiveRecord::Base::sanitize_sql可以工作,但是我不希望使用不推荐使用的方法。

当前在5.2导轨上

解决方法

tl; dr如果没有连接到数据库,就无法做到这一点。

由于我研究了sanitize_sql_for_conditions的工作原理,因此将在这里回答我自己的问题。将sanitize_sql_for_conditions与包含sql和哈希的数组输入一起使用时,它最终指向replace_bind_variable(value,c = connection),这需要连接到db才能确定要使用的quote方法。所以这里没有运气。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...