我想像这样传递一个 ruby 数组值:
sql = "SELECT $1"
User.connection.raw_connection.exec_params(sql, [[1,2]])
返回
PG::IndeterminateDatatype: ERROR: could not determine data type of parameter $1
如果我将 sql
更改为 "SELECT $1::int[]"
我会得到 PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "[1, 2]”
。
有没有办法将 ruby 数组传递给 exec_params
并将其转换为 PostgreSQL 数组?
最佳答案
您可以使用编码器来做到这一点:
raw_connection.exec(
"select $1::int[]",
[PG::TextEncoder::Array.new.encode([1, 2])]
)
关于ruby-on-rails - Ruby PG gem 使用数组作为带有 exec_params 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409360/