这是我第一次看到这个问题。我正在构建一个 SQL 数组以通过 sanitize_sql_array 运行,Rails 在返回值中添加了额外的、不必要的单引号。所以而不是返回:
SELECT DISTINCT data -> 'Foo' from products
它返回:
SELECT DISTINCT data -> ''Foo'' from products
这当然 Postgres 不喜欢。
这是代码:
sql_array = ["SELECT DISTINCT %s from products", "data -> 'Foo'"]
sql_array = sanitize_sql_array(sql_array)
connection.select_values(sql_array)
请注意,当我使用更短且更常用的时会发生同样的事情:
sql_array = ["SELECT DISTINCT %s from products", "data -> 'Foo'"]
connection.select_values(send(:sanitize_sql_array, sql_array))
以前见过这个吗?它与使用HStore有关吗?我绝对需要对该字符串进行清理,因为字符串 Foo 实际上来自用户输入的变量。
谢谢!