【发布时间】:2015-08-02 08:24:57
【问题描述】:
您好,我的搜索查询有问题,有 3 个值(val1、val2、标签),其中一个是数组(标签)。我知道 rails 不支持数组,但 Postgres 支持,而且我已经安装了它。
我有一个示范动作:
def self.find_object(val1, val2, tags)
if tags.blank?
Object.where( val1: val1, val2: val2 ).to_a
else
Object.where( "val1 = ? and val2 = ? and tags = [?]", val1, val2, tags).to_a
end
end
但我得到一个错误:
PG::SyntaxError: 错误: "[" LINE 1 处或附近的语法错误: ...HERE (val1 = 'Ziemia' and val2 = '1' and tags = ['Jadeit']... ^ : SELECT "objects".* FROM "objects" WHERE (val1 = 'Ziemia' and val2 = '1' and tags = ['Jadeit'])
我的问题是我不知道如何处理数组搜索。在我的测试应用程序中,像这样的代码 >> Student.where("hobby && ARRAY[?]", hobby) 其中 hobby 是一个数组有效,所以这是我在这个示例中的开始。我会很高兴任何提示如何处理这个:)
编辑:添加错误信息
【问题讨论】:
-
我认为这个
tags = [?]应该是tags IN (?) -
不,现在我收到错误
ERROR: array value must start with "{" or dimension -
你的
tags是数组格式吗? -
是的
t.text :tags, array: true, default: []
标签: ruby-on-rails postgresql activerecord