pluckメソッドで指定列の配列を取得できますが、
複数列まとめて取得したかったので、
その際書いたコードです。
※拡張と書いてしまいましたが、別メソッドとして利用するコードとなっています。
使い方
Model.select("key1 AS k1, key2 AS k2").multi_pluck([:k1, :k2])
結果
[["k1の値", "k2の値"], ["k1の値", "k2の値"] ・・・]
拡張用コード
active_record_multipluck_extension.rb
module ActiveRecord
module Calculations
def multi_pluck(column_names)
result = klass.connection.select_all(arel, nil, bind_values)
return result.map do |attributes|
column_names.map do |key|
klass.initialize_attributes(attributes)[key.to_s]
end
end
end
end
end
こちらを参考にさせてもらいました。
https://github.com/jeroeningen/rails/commit/da91b0ae75635b540307c406863620db4073c688