私はPGデータベースでrails 4.2を実行しています。Rails where節が何かが配列として格納されているとき
私は、このような(モデルItem
)としてデータベースに保存されているアイテムを持っている:
:something => ["1", "2", "3"]
は私がItem.where(:something.include? => "3")
は明らかにこれが機能していない取得したいと思います - しかし、どのように行うことを意味していますレールでこれ?
私はPGデータベースでrails 4.2を実行しています。Rails where節が何かが配列として格納されているとき
私は、このような(モデルItem
)としてデータベースに保存されているアイテムを持っている:
:something => ["1", "2", "3"]
は私がItem.where(:something.include? => "3")
は明らかにこれが機能していない取得したいと思います - しかし、どのように行うことを意味していますレールでこれ?
documentationによると、このような何かが動作するはずです:
Item.where('something @> ARRAY[?]::varchar[]', ['3'])
を加えて、答えを@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'])
文書によると、1つの要素だけを検索するときに使用する方法が短くなります。 'Item.where(" '3' = ANY(something) ")' 私はそれを行うための簡単なactiverecordの方法はありません! –
@MaxChrétien:答えにあなたのコメントを含めることができますか?私はそれがかなり役に立つと考えられると思う。 – potashin
コメントは拒否されました。 _この編集は投稿の投稿者に対処するためのものであり、編集としては意味がありません。それは、コメントや答えとして書かれているはずです。 –