2016-02-23 4 views
0

Я использую Rails (4.2) и тип данных Postgres JSON для хранения массивов:Rails: Выполнение запросов Postgres для JSON массива

#<Mapping:0x007fa3b6263390 foo: ["bar", baz]> 

Теперь я хочу запросить все отображения с определенным массивом:

Mapping.where(foo: ["bar", "baz"]) 

Оказалось, что это не работает. Какой запрос я могу использовать, чтобы найти то, что хочу? Все примеры запросов JSON обычно относятся к хэшам, а не к массивам (по крайней мере, не на верхнем уровне).

+0

Существует поддержка типа данных массива в postgres. http://edgeguides.rubyonrails.org/active_record_postgresql.html –

ответ

0

ActiveRecord имеет встроенный support для массивов Postgres.

# equality 
Book.where("tags = ARRAY[?]::varchar[]", ["fantasy", "fiction"]) 

# inclusion 
Book.where("tags @> ARRAY[?]::varchar[]", ["fantasy", "fiction"]) 

Есть довольно много функций массива доступны, проверить их here.

Смежные вопросы