15
11

More than 3 years have passed since last update.

pluck→カラム名でHashにしたい時

Last updated at Posted at 2018-12-07

なにかのバッチ処理をしたりする時、
何かしらのレコードから、いくつかのカラムをpluckして、
配列操作したい時ありませんか?
でもテーブルから複数レコードをpluckしてきた値って、ArrayのArrayで、
これをこのまま扱っていくと、
some_array.map {|array| array[1] * (array[3] - array[2]) ...
と、言うような宇宙人向けコードを生み出してしまいませんか?

そこで、今回はカラム名でHash化する方法を考え出したのでご紹介しようと思います。

pluck_columns = [:hoge, :fuga, :piyo]
TekitouModel.pluck(*pluck_columns).map do |tm|
  pluck_columns.zip(tm).to_h
end

以上です。
仕事中に思いついたので備忘録的に記させていただきました。
実はもっと簡単な方法あったりしたらお願いします。
(pluckに指定するcolumnの名前と、hashにしたいキー名が異なるなら、
zipのレシーバにする配列を、pluckする配列と別途用意してあげれば大丈夫です)

15
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11