Ruby + Sequel-将数组序列化为文本数组查询

我在一个ruby应用程序中有一个过滤器数组,它对Postgres连接进行原始SQL查询我正试图找出如何将这个数组序列化为可查询的内容,
即:SELECT * FROM data WHERE strings IN #{strings_array}
我找不到任何资源。序列化此查询的正确方法是什么?
编辑:我最终发现:

query = ''
arr.each_with_index { |e, i|
  if i == arr.length - 1
    query += "#{e}"
  else
    query += "#{e},"
  end
}

然后
" AND column @> ('{#{query}}')"
但是一定有一个不那么冗长的方法,不是吗?


最佳答案:

你说你用续集。Sequel可以自动执行这种查询:

DB[:data].where(strings: ["my", "array", "of", "strings"])
# => #<Sequel::Postgres::Dataset: "SELECT * FROM \"data\" WHERE (\"strings\" IN ('my', 'array', 'of', 'strings'))">

手工构造SQL查询是有风险的,尤其是在处理来自用户的数据时。