なにかのバッチ処理をしたりする時、
何かしらのレコードから、いくつかのカラムを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する配列と別途用意してあげれば大丈夫です)