activerecord-raw-data というライブラリを書いた
activerecord-raw-data というライブラリを書いた
ActiveRecord を使うと生データを結果として取得するAPIが無くて、結果が別に AR オブジェクトじゃなくて良い場合だとコストが高い。数十万個のデータを取り出すときなんかはわりと無視できない速度になるので、生でとれるライブラリ書いた(たいしたことはしてない)。
User.raw_data #=> [{"id" => 1, "name" => "alice"}, {"id" => 2, "name" => "bob"}, ...]
User.raw_rows #=> [[1, "alice"], [2, "bob"], ...]
User.select(:name).raw_values #=> ["alice", "bob", ...]
みたいに使える。AR 3.2 からは pluck で1カラムの値は取り出せるんだけど、型キャストをきちんとしてるので、そうでもなく適当に取り出したいときは raw_values を使う。