【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の使い方について忘れてしまったらこの記事を確認してくださいね!

この記事を書いた人

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

目次