如何解决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
方法。所以这里没有运气。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。