ruby-on-rails - Ruby PG gem 使用数组作为带有 exec_params 的参数

标签 ruby-on-rails arrays ruby postgresql pg

我想像这样传递一个 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/

相关文章:

html - 为什么我的页面自动滚动到底部/

javascript - 使用 map 转换数组 - Javascript

ruby - 将 ruby​​ 方法从 method() 转换为 ().method

ruby-on-rails - 模型中的一个或多个参数使用 Ruby on Rails 查找条件

ruby-on-rails - Github 警告有关 Omniauth gem 的安全问题

ruby-on-rails - 如何验证 Rails 中子模型中嵌套属性的父 ID 是否存在

java - 需要读入 ArrayList 并将正数和负数分开

ruby - Ruby Version Manager 会干扰 Dream Linux 上的系统脚本吗?

ruby-on-rails - RoR 3 - 从一组 child 中查找 parent 列表

java - 获取java中特殊字符前的字符串值