2016-06-21 2 views
1

Мой вопрос специфичен для типа данных rails + postgres hstore.Rails postgres hstore: запрос для конкретного ключа с любым из заданных значений

WHERE IN [1,2, 3] или эквивалент рельсов Model.where(data: [1,2,3]) отлично подходит для обычных столбцов, но не для hstore.

У меня есть столбец hstore (скажем info), и я хочу запросить строки, имеющие конкретный ключ и любое из заданных значений.

Например: Для того, чтобы найти все книги, которые имеют ключ, как «автор» и значение, как «ABC» в колонке hstore, следующий запрос работает отлично:

Book.where("info @> hstore(:key, :value)", key: "author", value: "ABC")

Но мне нужен запрос, возвращает записи, которые имеют ключ как «автор» и любой из значений в ['ABC', 'XYZ', 'PQRS', 'DFG'].

Любые предложения?

ответ

0

Может попробовать:

Book.where("(info -> :key) IN (:values)", key: 'author', values: ['ABC', 'XYZ']) 

Однако @> поддерживает индекс, в то время как это не будет использовать никаких индексов.

+0

Спасибо. Это работало, но без поддержки индексов, как вы сказали. – ranjan