Railsで特定のカラムのデータを配列で取り出す方法(pluck)

こんにちは!

今回はRailsで特定のカラムのデータを配列で取り出す方法(pluck)についてまとめます。

やりたいこと

  • DBから特定のカラムの要素を取り出したい

pluckメソッド

  • 指定したカラム名の値を取り出せる

    使用例

# Itemモデルからname列を取得
Item.pluck(:name)
=> [ "りんご", "バナナ", "みかん"]

# Itemモデルからname, price列を取得
Item.pluck(:name, :price)
=> [["りんご", 300], ["バナナ", 200], ["みかん", 400]]

解説

  • ポイントはSQLの検索する幅が狭いこと
# pluckの代わりにallを使用した場合
Item.all.map(&:name)
=> [ "りんご", "バナナ", "みかん"]
  • pluckを使用した場合と結果は同じだが、SQLクエリの内容が異なる
メソッド SQLクエリ
pluck SELECT "Items.name" from "Item"
all SELECT "Items.*" from "Item"
  • pluckの方が取得するカラムが少なく高速

おわりに

今回はRailsで特定のカラムのデータを配列で取り出す方法(pluck)についてまとめました。Railsには初めて見るメソッドがたくさんあるので日々覚えていきたいと思います。

68/100