Скажем, у меня есть модель Neighborhood
, которая имеет jsonb поле [] families
, который представляет собой массив, содержащий объекты JSON с любым типом ключа значения спаривания, как так [{"name":"Smiths", "count":4}, {"name":"Miller","out_on_vacation":false}, {"name":"Bennet", "house_color":"red", "count": 4}]
Rails Postgres фильтрации для объекта jsonb внутри jsonb массива
Я хочу сделать запрос activerecord, чтобы найти окрестности для окрестностей, имеющих определенные объекты внутри своего массива families
. Итак, если бы я сделал что-то вроде Neighborhood.where({families: {count: 4})
, результатом были бы любые модели окрестностей, чье семейство содержит объект jsonb с парным значением ключа count: 4
. Я играл с кучей разных запросов, но, похоже, не могу заставить их работать, не получив ошибку. Как я могу написать запрос Activerecord, чтобы получить желаемые результаты?
EDIT: я запустить миграцию так:
def change
add_column :neighborhoods, :families, :jsonb, array: true, default: [], index: true
end
хммм, это все еще не работает для меня по какой-то причине, я сделал миграцию, чтобы добавить jsonb [] столбец, который я писал в вопрос под заголовком редактирования. всякий раз, когда я пытаюсь «Neighborhood.where% q (family @> '[{" count ":?}]'), 4' Я получаю' ERROR: неверный массив литерала' и подробное высказывание '' ["должно вводить явно заданные размеры массива. «Вы знали, почему это было бы случайно? – user3769323
Вы случайно использовали индекс? – user3769323