【Ruby】ActiveRecordでSQLのINのプレースホルダに配列を渡すといいことがある

RailsのActiveRecordを使っていてIN句を使いたいとき

たとえば


Hoge.where(["user_id IN ('2', '3')"])


みたいに「user_idが2または3のレコードを抽出したい」といった場合がありますよね
コレをベタにやってしまうと条件の値(この例だと2と3)が入った配列の中身をそれぞれクォーテーションでかこって、カンマでつなげて。。。
みたいな面倒なことしなきゃいけないと思ってしまいますが。

プレースホルダを使うといい感じにやってくれます。


values = [2, 3]
Hoge.where(["user_id IN (?)", values])


こちらのやり方でも上記と全く同じSQL文が発行されます
これを知っておくともうINに渡す値を面倒な文字列連結とかして作らないで大丈夫です。

簡単なメモとして残しておきます。

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:Ruby  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる