to_query とは?
ハッシュからいい感じにクエリ文字列を生成してくれるメソッド。
active_support/core_ext
を require すると使える。
注意点
require 'active_support'
require 'active_support/core_ext'
hoge = {}
hoge[:b] = 1
hoge[:a] = 2
hoge #=> {:b=>1, :a=>2} この時点では、(Ruby1.9以降ならば登録順が保持されている)
hoge.to_query #=> "a=2&b=1" key による辞書順に変わる!
ということで、ハッシュは Ruby1.9 より順序が保証されるようになったのだが、to_query ではハッシュの key で辞書順に直した形で文字列化されるので注意が必要。
参考
https://github.com/rails/rails/issues/10529
↑ここでめっちゃ議論されている。
hughdavenport
氏 「配列の場合とハッシュの場合で挙動が違うのはバグだろ!!」
rafaelfranca
氏 「確かに修正の必要性は認めるが、ドキュメントと矛盾していないのでこれはバグではない。メーリスでやれ。」