🗺️

【備忘録】Railsで使う書き方④~pluck~

2022/06/04に公開

この記事の4回目になります。

https://zenn.dev/adverdest/articles/c8bf3fa1ed1b7f

map &:to_i

Railsで開発されたアプリケーションで次のようなコードがありました。

sample.rb
 Book.all.map(&:to_i)

フォームで送信された本のidを整数型に変換するコードですね。

これでも良さそうですが調べてみると次の書き方が望ましいようです。

sample.rb
 Book.all.pluck(:id)

pluck

https://railsdoc.com/page/model_pluck

上のリンク先にある通り、用途は指定したカラムのレコードの配列を取得することになります。

なぜこちらのメソッドがいいかは次の記事にある通り、plunkの場合は必要なフィールドだけを読み込むためです。

https://techracho.bpsinc.jp/hachi8833/2018_09_26/62333

注意

このメソッドは便利なのですが、注意点があります。
plunkで返される値は指定したカラムのみとなります。Active Recordの実際のモデルが必要となる場合は使用できません。

また、ループ中にplunkを実行するとN+!問題が発生します。
この場合はmapメソッドを使用した方がいいでしょう。

https://nishinatoshiharu.com/ruby-map-pluck/

Discussion