Rails -PG :: InvalidTextRepresentation:错误:格式错误的数组文字

时间:2017-03-31 12:34:01

标签: ruby-on-rails arrays postgresql

add_column :ssr_service_markets, :origin, :string, array: true, default: []

当我想要

SSRService::Market.where(origin: "*", destination: "*").first

我有

PG::InvalidTextRepresentation: ERROR: malformed array literal: "*" LINE 1: ...service_markets" WHERE "ssr_service_markets"."origin" = '*' DETAIL: Array value must start with "{" or dimension information

如何解决?

1 个答案:

答案 0 :(得分:1)

在Postgres中,要检查数组是否包含给定元素,您可以使用@>数组运算符。

了解详情:Array Operators

:originssr_service_markets表中的数组字段,这意味着它可以包含多个值。

在您的示例中,假设destination也是一个数组字段,您可以尝试以这种方式进行搜索:

Model.where(["origin @> ? AND destination @> ?", '{*}', '{*}')"])

在使用array values时,请记住使用花括号

  

要将数组值写为文字常量,请将该元素括起来   花括号内的值[...]