【Rails入門】pluckの使い方まとめ

こんにちは! フリーエンジニアの長瀬です。

みなさんはpluckを使っていますか?

pluckを使えば、高速かつ簡潔にカラムの値をデータベースから取り出せます。

この記事ではpluckの使い方について

・pluckとは

・pluckにて複数列を取得する方法

という基本的な内容から、

・pluckにて取得結果の表示をカスタマイズする方法

といった応用的な内容についても解説していきます。

目次

pluckとは

pluckRailsでデータベースからデータを取り出すメソッドの一つです。

pluckの構文はとてもシンプルで直感的に使いやすいものになっています。

モデル.pluck(カラム名)

このように、モデルとカラム名を指定するだけで、簡単にデータを取り出せます。

また、pluckではデータは配列として取り出されます。

指定したカラムが2つ以上の場合は、配列の配列になります。

pluckにて複数列を取得する方法

それでは実際にpluckを使っていきましょう。

今回使用するモデルとコントローラとビューを作成するためにコマンドプロンプトに以下のコードを入力してください。

[モデルとコントローラとビューを作成し、マイグレーションファイルの内容を反映する]

rails g model User name:string prefecture:string

rails g controller Example test

rake db:migrate

これで今回使用する使用するモデルとコントローラとビューを作成できました。

それではデータベースにpluckメソッドを使って取り出すためのデータを入れていきましょう。

rails consoleでコンソールを起動した後、以下のコードを入力してください。

[今回使用するデータをUserに取り込む]

User.create(name:"長瀬来",prefecture:"北海道")
User.create(name:"新渡戸春樹",prefecture:"東京都")
User.create(name:"飯島俊介",prefecture:"岩手県")
User.create(name:"滝沢由美子",prefecture:"京都府")
User.create(name:"新川豊",prefecture:"福井県")

これでデータが入りました。

それでは、pluckを使用して、データを取り出してみましょう。

rails consoleでコンソールを起動した後、以下のコードを入力してください。

[pluckメソッドを使って,nameのカラムの値を取り出す]

User.pluck(:name)

[実行結果]

 (0.5ms)  SELECT "users"."name" FROM "users"
 => ["長瀬来", "新渡戸春樹", "飯島俊介", "滝沢由美子", "新川豊"]

カラムを1つだけ指定しているので、配列にてnameの値が表示されます。

次はカラムを2つ指定してみましょう。

[pluckメソッドを使って,nameとprefectureのカラムの値を取り出す]

User.pluck(:name,:prefecture)

[実行結果]

(0.4ms)  SELECT "users"."name", "users"."prefecture" FROM "users"

=> [["長瀬来", "北海道"], ["新渡戸春樹", "東京都"], ["飯島俊介", "岩手県"], ["滝沢由美子", "京都府"], ["新川豊", "福井県"]]

このように、配列の配列としてnameとprefectureのカラムの内容が取り出されていることが確認できます。

pluckにて取得結果の表示をカスタマイズする方法

それでは、pluckで取り出した値をうまくビューに表示できるようにしてみます。

pluckでは配列として取り出されるので、ビューで表示する際には不都合です。

なので、joinメソッドを使って、表示を整えていきましょう。

app/views/example/test.html.erbに以下の既存のコードをすべて削除して以下のコードを入力してください。

[app/views/example/test.html.erbに入力する内容]

名前一覧:<%= User.pluck(:name) %>

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

そして、test.html.erbのルーティングを確認するためにapp/config/route.rbを開いてください。

[app/config/route.rbの内容]

 get 'example/test'

となっていることが確認できます。

以下のURLにアクセスして、test.html.erbを開いてください。

http://localhost:3000/example/test

(補足http://localhost:3000の箇所は各自の開発環境により読み替えてください。)

[実行結果]

pluck1

このように、そのままだと配列で取り出したまま表示されるので不都合です。

なので、joinメソッドをチェーンさせて

[app/views/example/test.html.erbに入力する内容]

名前一覧:<%= User.pluck(:name) %>

のコードを

[新たにapp/views/example/test.html.erbに入力する内容]

名前一覧:<%= User.pluck(:name).join(" ") %>

に書き換えてください。

[実行結果]

pluck2

このように、join(“任意の区切り文字”)で指定した通り、半角の空白で区切った名前一覧が表示されて表示の問題を解決できました。

まとめ

いかがでしたでしょうか?

この記事では、pluckの使い方を解説しました。

pluckを使えば、手軽にカラムの値を取り出せて、便利です。

また、pluckを使ってビューにカラムの値を表示させたいときにはjoinメソッドを使えば、綺麗に表示できます。

もしpluckの使い方について忘れてしまったらこの記事を確認してくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次