查询 int 是否在数组列内,Postgres with Rails

Querying if an int is inside of an array column, Postgres with Rails

我有一个 table,其中有一列类型为整数数组。 给定一个整数作为输入,我想查询此列命名的行 tipo_propiedad 包含输入整数。 直接在 Postgres 中可以通过使用 && 运算符并将输入 int 转换为数组来工作。 问题是使用这个:

Zone.where("tipo_propiedad && ?", [].push(type)).count

其中 type 是输入整数,给出

SELECT COUNT(*) FROM "zonas" WHERE (tipo_propiedad && 1) PG::UndefinedFunction: ERROR: operator does not exist: integer[] && integer

我也试过

Zone.where("tipo_propiedad && ?", [5].push(type))

因为 tipo_propiedad 里面只有 1、2 或 3,所以

SELECT COUNT(*) FROM "zonas" WHERE (tipo_propiedad && 5,1) PG::UndefinedFunction: ERROR: operator does not exist: integer[] && integer

我也在使用 squeel,但是 gem 没有任何操作员可以执行此操作。

你可以做任何一个

Zone.where("'?' = ANY (tipo_propiedad)", 1)

Zone.where("tipo_propiedad && ARRAY[?]", 1)
                     # or "&& '{?}'"