所以,我在一个表中 t.text "foo", default: [], array: true
Rails的查询与对Postgres的阵列列
有此列,我已经在一个辅助文件这个数组列表,
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
对象的正确查询是什么?
'的ActiveRecord :: StatementInvalid:PG :: UndefinedFunction:ERROR:运营商不存在:文本[] &&字符改变[]'抛出此错误。 – angkiki
em,对不起,发现列是'text'类型,而不是'string'类型。所以试试'FooName.where(“foo && ARRAY [?] :: text []”,HelperData :: Helper_array)'。我已经在我的导轨控制台中进行了测试,它正在工作。 –
好的,谢谢!我会测试它,并检查你的答案是正确的,如果它的工作! :) – angkiki