2016-03-09 5 views
5

私はPGデータベースでrails 4.2を実行しています。Rails where節が何かが配列として格納されているとき

私は、このような(モデルItem)としてデータベースに保存されているアイテムを持っている:

:something => ["1", "2", "3"] 

は私がItem.where(:something.include? => "3")

は明らかにこれが機能していない取得したいと思います - しかし、どのように行うことを意味していますレールでこれ?

答えて

6

documentationによると、このような何かが動作するはずです:

Item.where('something @> ARRAY[?]::varchar[]', ['3']) 
+0

文書によると、1つの要素だけを検索するときに使用する方法が短くなります。 'Item.where(" '3' = ANY(something) ")' 私はそれを行うための簡単なactiverecordの方法はありません! –

+0

@MaxChrétien:答えにあなたのコメントを含めることができますか?私はそれがかなり役に立つと考えられると思う。 – potashin

+0

コメントは拒否されました。 _この編集は投稿の投稿者に対処するためのものであり、編集としては意味がありません。それは、コメントや答えとして書かれているはずです。 –

2

を加えて、答えを@potashinし、(documentationを参照してください)あなたは要素上のアイテムを入手する必要がある場合に行うための短い方法があります。

# Items for a single something 
    Item.where("'3' = ANY (something)") 
    # Or using '?' 
    Item.where('? = ANY (something)', '3') 

# Items for multiple something 
    Item.where('something @> ARRAY[?]::varchar[]', ['3', '4']) 
関連する問題