検索が一瞬でできる!Ruby on Railsのpluckの使い方【初心者向け】

Ruby on Railsで書くpluckの使い方について解説しています。pluckを利用すればモデル内の検索が一発でできます。他のメソッドと比較して紹介しているので、どんな時に便利なのか理解できるはずです。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

RubyのフレームワークのRuby on Railsにはpluckという機能が存在します。これを活用すればモデルの探索を高速に行うことが可能となります。それではpluckについて解説していきたいと思います。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回はpluckについて学習しよう。

大石ゆかり

田島メンター!!pluckは何をするんですか〜?

田島悠介

pluckは指定したカラムの配列を取得するときに使用するんだ。具体的な書き方を見てみよう。

大石ゆかり

はい!

 

pluckを使用してみる。

pluckは指定したカラムの配列を取得することができます。

User.pluck(:id)

#=>[1,2,3]

上記のように指定したモデルの指定したカラムを配列で返すことができます。

また以下のように複数のカラムを指定することも可能となっています。

User.pluck(:id,:name)

#=>[[1,Tarou],[2,Hanako],[3,Toshi]]

複数のカラムを指定した場合配列の配列で値が帰ってきます。

 

大石ゆかり

このUser.pluck(:id)というのはどこで行うんですか?

田島悠介

pluckを行う前にまずrails console(あるいはrails c)を実行しよう。そこから取得を行うよ。終了するときはexitだね。

大石ゆかり

なるほど。idと名前、指定した値が配列で表示されました!

 

mapとの違い

pluckとよく似たメソッドにmapというものが存在します。

User.all.map(&id)

#=>[1,2,3]

このように指定されたカラムの配列を返すことができます。それではmapとpluckの違いを解説していきたいと思います。

ソースコードの書きやすさ

例のソースコードを見てもわかる通りpluckは、ソースコードをmapよりもより簡単に書くことができます。上のような例だとあまり変わらないように感じますが、例えば、ランクが3以上のユーザーのidを取得したいと言った場合に、

#map使用

User.select(:id).where("rank > =?",3).map(&id)

#pluck使用

User.where("rank>=?",3).pluck(:id)

と、より簡単に記入できていることが確認できます。

処理が早い

みなさんが現在コードを書くにあたってあまり意識しなくてもいい事ですが、将来大規模なRailsアプリケーションを開発した際に処理速度というのは非常に重要になってきます。pluckはmapに比べて標準的なデータベースの探索のみなら、約4倍程の速度を出せると言われています。

 

今回はpluckについて簡単に解説しました。pluckはモデルの検索を早く簡単に行う事ができます。是非マスターしておくようにしましょう。

 

田島悠介

最後にmapについて説明したよ。

大石ゆかり

mapよりもpluckの方が全体的に使いやすく、早いということですね。

田島悠介

もちろん例外もあるけれど、基本的にはpluckの方を使う形で問題ないと思うよ。積極的に利用していこう。

大石ゆかり

なるほど、分かりました。ありがとうございます!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。