最初にまとめ
tap 便利だった
やりたかったこと
SomeHistory. # 5〜6行くらいのなんか複雑な ActiveRecord::Relation のメソッドチェーン pluck(:user_id)
こういうクエリに対して雑に実行計画をとりたかった
pluck
を呼んだ時点で戻り値がArrayになるので pluck(:user_id).explain
ってのはできない。
かといってexplainのためだけに5〜6行くらいあるメソッドチェーンコピペしたくなかったのでどうすっかなーと思ったら tap
を思いついた
やり方
pluckを呼ぶ直前にtapを仕込んでexplain
SomeHistory. # 5〜6行くらいのなんか複雑な ActiveRecord::Relation のメソッドチェーン # NOTE: 実行計画の結果が変わるため、selectがない場合はつけておく。tap { |ar| puts ar.select(:user_id).explain } とかでも可 select(:user_id). tap { |ar| puts ar.explain }. pluck(:user_id)
余談
どうでもいいですが「雑(ざつ)」と「tap(たっぷ)」って語感似てますよね?