Rails查询与Postgres数组列

时间:2017-04-01 06:56:38

标签: ruby-on-rails postgresql activerecord

所以我在表格中有这个列 t.text "foo", default: [], array: true

我在帮助文件中有这个数组列表,

module HelperData

  Helper_array = [
    "data_1",
    "data_2",
    "data_3",
    "data_4",
    "data_5"
  ]
end

FooName.rb模型中,有include HelperData行。

因此,我希望传递的查询是包含运算符&&,用于比较PG数组,基于此Postgres Guide

我尝试了以下查询:

FooName.where("foo" && HelperData::Helper_array)。此查询返回错误ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:。语法错误与HelperData::Helper_array中的元素有关。我有一个轻微的预感,因为Foo:text,但Helper_array中的数据是string,但我无法确定。

FooName.where("foo && HelperData::Helper_array")。此查询返回错误ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:。显然这只是错误的语法。

查找foo数组是否包含与Helper_array重叠的元素,并返回具有重叠元素的所有FooName个对象的正确查询是什么?

1 个答案:

答案 0 :(得分:0)

尝试:

FooName.where("foo && ARRAY[?]::text[]", HelperData::Helper_array)

参考此链接 https://www.postgresql.org/docs/current/static/functions-array.html