検索が一瞬でできる!Ruby on Railsのpluckの使い方【初心者向け】
Ruby on Railsで書くpluckの使い方について解説しています。pluckを利用すればモデル内の検索が一発でできます。他のメソッドと比較して紹介しているので、どんな時に便利なのか理解できるはずです。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
監修してくれたメンター
mentor-hakamata
C#, Ruby, Python, JavaScriptなど経験。
Rubyのpluckメソッドの使用方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
テーブルから指定したカラムの値を配列に加工して取得するときに使用できるので、知っておくと今後役立つでしょう。
目次
- pluckメソッドとは
- pluckメソッドの書き方
- pluckメソッドの使い方
- pluckメソッドとmapメソッドの違い
- pluckメソッドを利用してカラム値を取得してみよう
- まとめ
- Ruby on Railsを学習中の方へ
Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
今回は、Rubyに関する内容だね!
どういう内容でしょうか?
pluckメソッドの使い方について詳しく説明していくね!
お願いします!
pluckメソッドとは
テーブルから指定したカラムの値を配列に加工して取得できます。
1つ、または複数のカラムを指定することができます。
pluckメソッドの書き方
モデルに対して、pluckメソッドを呼び出すだけです。
モデル名.pluck(:カラム名)
pluckメソッドの使い方
pluckメソッドの使い方として、2つのカラム値を取得する方法をご紹介します。
- カラムの値を取得する
- 複数カラムの値を取得する
それぞれの取得方法について以下で解説します。
カラムの値を取得する
1つのカラムの値を取得する場合は
モデル名.pluck(:カラム名)
このようにすることでカラムの値を取得することができます。
結果は[“カラム名の値1”, “カラム名の値2”]という配列になります。
複数カラムの値を取得する
複数のカラムの値を取得する場合は
モデル名.pluck(:カラム名1, :カラム名2)
このようにすることでカラムの値を複数取得することができます。
結果は[[“カラム名1の値1″,”カラム名2の値1”],[“カラム名1の値2″,”カラム名2の値2”]]という二次元配列になります。
pluckメソッドとmapメソッドの違い
mapメソッドを使っても同様のことが可能です。
モデル名.all.map(&:カラム名)
結果は[“カラム名の値1”, “カラム名の値2”]という配列になります。
mapメソッドで取得したデータに対して、カラム名で指定した値を順番に取得し、配列にしています。
これをpluckメソッドで書くと前述の通り、
モデル名.pluck(:カラム名)
こうなりますので、mapメソッドを使用するより簡単に書けます。
注意するべきなのは、pluckメソッドを実行する対象がモデル名で指定したテーブルの全てのデータということです。
条件に応じたデータのカラムの値を取得したい場合は
モデル名.where(条件).pluck(:カラム名)
このようにwhere句などで条件を付けるようにしましょう。
pluckメソッドを利用してカラム値を取得してみよう
例えばUserというモデルが存在していて、name, emailというカラムがある場合を想定します。
usersテーブルには複数件データが登録されている状態です。
nameカラムの値を取得してみましょう。
irb(main):016:0> User.pluck(:name) User Pluck (0.6ms) SELECT "users"."name" FROM "users" => ["tarou", "zirou"]
nameカラムの値が配列で取得できていますね。
次にnameカラムとemailカラムの値を取得してみましょう。
irb(main):017:0> User.pluck(:name, :email) User Pluck (0.6ms) SELECT "users"."name", "users"."email" FROM "users" => [["tarou", "tarou@example.com"], ["zirou", "zirou@example.com"]]
nameカラムとemailカラムの値が二次元配列で取得できていますね。
最後に条件を付けて取得したデータのnameカラムを取得してみましょう。
irb(main):019:0> User.where("id > 1").pluck(:name) User Pluck (0.6ms) SELECT "users"."name" FROM "users" WHERE (id > 1) => ["zirou"]
条件で絞り込んだデータのnameカラムが取得できていますね。
まとめ
本記事では、Ruby on Railsにおけるpluckメソッドについて解説しました。
- pluckメソッドとは
- pluckメソッドの書き方
- pluckメソッドの使い方
- pluckメソッドとmapメソッドの違い
pluckメソッドを理解することで、効率的な配列データの取得を実現できます。
ぜひ使いこなせるように覚えておきましょう。
Ruby on Railsを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのWebアプリケーションコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、Ruby on Railsを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!