2016-06-21 1 views
1

私の質問は、rails + postgres hstoreデータ型に固有です。Rails postgres hstore:指定された値を持つ特定のキーを問い合わせる

WHERE IN [1,2, 3]またはレール相当物Model.where(data: [1,2,3])は、通常の列では正常に動作しますが、hstoreでは正常に動作しません。

私はhstore列(たとえばinfo)を持っており、特定のキーと指定された値のいずれかを持つ行を照会したいと思います。

例えば:hstoreの列にある「ABC」としての「著作者や値などのキーを持っているすべての書籍を検索するには、次のクエリは正常に動作します:

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

しかし、私は、クエリを必要とします'author'としてのキーと['ABC'、 'XYZ'、 'PQRS'、 'DFG']のいずれかの値を持つレコードを返します。

提案がありますか?

答えて

0

多分試してみてください。これは、すべてのインデックスを使用しませんしながら、

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

はしかし、@>は、インデックスをサポートしています。

+0

ありがとうございました。それはうまくいきました。 – ranjan

関連する問題