Pluckのあるクエリでexplainをどうやって出力するか
idが1000より大きいユーザの地域一覧を取りたかった
User.distinct.where('id > 1000').pluck(:city)
というコードを書いて、「distinct意味ないじゃん」みたいなことを言われた
実はクエリの遅延評価によってpluckまでクエリに含まれるのだが、それを以下のコードを見せて証明しようとした
User.distinct.where('id > 1000').pluck(:city).explain
エラーが起きた。そりゃそうだ、pluckが返すのはArrayで、 Array#explain
はないのだから
これうまくやりたい。pluckしたあとでもexplainでクエリ見たい
解1
pluckはクエリを発行するが、explainに必要な情報は Activerecord#Relation
? 特殊変数に入れておく。で、explainで使う
解2
pluck_explain(:city)
というメソッドを生やす
解2はハックしてる感がないので1点。