LoginSignup
3
2

More than 5 years have passed since last update.

to_query でハッシュからクエリ文字列を作成する際は、辞書順に置き換わることに注意する

Posted at

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氏 「確かに修正の必要性は認めるが、ドキュメントと矛盾していないのでこれはバグではない。メーリスでやれ。」

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2