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
方法.所以这里没有运气。
主要参考本文档中的方法 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
方法.所以这里没有运气。