今回はpluckメソッドが便利だったので自分なりにまとめてみました。
pluckメソッドとは・・・
公式ドキュメントでは以下のように記載されています。
pluckは、1つのモデルで使用されているテーブルからカラム (1つでも複数でも可) を取得するクエリを送信するのに使用できます。引数としてカラム名のリストを与えると、指定したカラムの値の配列を、対応するデータ型で返します。
ふむふむ。わかったようなわからないような・・・
使い方は?
では、実際のコードを見ていきます。
Productモデルがあったとして、nameカラムの中身を確認したい場合は、
Product.pluck(:name)
=> ["Ruby on Rails Tote",
 "Ruby on Rails Bag",
 "Ruby on Rails Baseball Jersey",
 "Ruby on Rails Jr. Spaghetti",
 "Ruby on Rails Ringer T-Shirt",
 "Ruby Baseball Jersey",
 "Apache Baseball Jersey",
 "Ruby on Rails Mug",
 "Ruby on Rails Stein"]
といったようにProductモデル内のnameカラムを一覧表示することができます。
Product.pluck(:id,:name)
=> [[1, "Ruby on Rails Tote"],
 [2, "Ruby on Rails Bag"],
 [3, "Ruby on Rails Baseball Jersey"],
 [4, "Ruby on Rails Jr. Spaghetti"],
 [5, "Ruby on Rails Ringer T-Shirt"],
 [6, "Ruby Baseball Jersey"],
 [7, "Apache Baseball Jersey"],
 [8, "Ruby on Rails Mug"],
 [9, "Ruby on Rails Stein"]]
このように第二引数を設定することも可能です。
便利ですね〜
Product.select(:id, :name).map { |c| [c.id, c.name] }
また上記のselectメソッド、mapメソッドを利用したコードと上記のコードは同等の意味になるので、pluckメソッドを上手く活用することでコードをシンプルに書くことができますね。
注意点
ただ、pluckメソッドには注意点もあります。
Product.pluck(:name).limit(1)   
=> NoMethodError: undefined method `limit' 
pluckメソッドは最初のようなケースではエラーが出てしまいます。
なぜなら、pluckメソッドはクエリを直接トリガするので、その後ろに他のスコープをチェインすることはできないからです。
Product.limit(1).pluck(:name)
=> ["Ruby on Rails Tote"]
ただし上記のように、構成済みのスコープに対してpluckの前に置くことはできます。
以上、簡単ではありますがpluckメソッドに関しての投稿でした。