🎓

mapメソッドとpluckメソッドって結局どっちを使うか?

に公開

pluckとmapの違い

pluckメソッド

指定したカラムのみをSQLで取得する。

Post.pluck(:title)
SELECT `post`.`title` FROM `post`
=> ["test_1", "test_2", "test_3", "test_4"]

mapメソッド

すべてのデータ取得後、そのデータから特定のカラムのデータを取得します。
mapはレシーバをメモリに読み込むのでメモリを浪費してしまう。

Post.all.map(&:title)
SELECT `post`. FROM `post`
=> ["test_1", "test_2", "test_3", "test_4"]

どのように使い分けるか

pluckメソッドは、特定のカラムのデータしか使用しないとき

mapメソッドは、インスタンス化されたオブジェクトからデータを取得するとき

Discussion