この問題は初めて見ました。sanitize_sql_array を実行する SQL 配列を構築していますが、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 は実際にはユーザーが入力した変数から来ているため、その文字列をサニタイズする必要があります。
ありがとう!