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

Rails: Use sanitize_sql_for_conditions without model or db connection

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

我有一个 sql、id = :id 以及我需要清理的绑定变量的用户输入。 sanitize_sql_for_conditions 非常适合我的情况。但是,似乎只能通过方法或通过活动的数据库连接来调用它。有没有办法在没有模型或数据库连接的情况下使用 sanitize_sql_* 方法?我知道 ActiveRecord::Base::sanitize_sql 有效,但我不想使用已弃用的方法。

目前 rails 5.2

tl;dr 没有连接到数据库是没办法的。

自从我深入了解 sanitize_sql_for_conditions 的工作原理后,我将在这里回答我自己的问题。当将 sanitize_sql_for_conditions 与包含 sql 和散列的数组输入一起使用时,它最终指向 replace_bind_variable(value, c = connection),这需要连接到数据库以确定要使用的 quote 方法.所以这里没有运气。