Сопоставление значений массива в PostgreSQL с ActiveRecord
В моем приложении Rails 4 у меня есть цель увидеть все контакты, где полеvisible_to
в таблице контактов равно 1. Мойvisible_to
является:integer, array: true
.
Однако я получаю следующее исключение:
PG::UndefinedFunction: ERROR: operator does not exist: integer[] = integer LINE 1: ....* FROM "contacts" WHERE "contacts"."visible_to" IN (1) OR... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.: SELECT "contacts".* FROM "contacts" WHERE "contacts"."visible_to" IN (1) ORDER BY created_at DESC
Я искал ответы и, насколько я вижу, есть проблема с типомvisible_to
, Однако я не мог найти решение. Я тоже пытался извлечь выгоду из подсказок бросков, но тщетно.
Моя миграция:
class AddVisibleToToContacts < ActiveRecord::Migration
def change
add_column :contacts, :visible_to, :integer, array: true, default: [], using: 'gin'
end
end
Соответствующая переменная из контроллера:
@contacts_all_user_sorted = Contact.all.where(visible_to: [1]).order("created_at DESC")