nested_hash = Hash.new { |hash, key| hash[key] = Hash.new(&hash.default_proc) }
とした上で
hash = nested_hash[:x][:y][:z] = 123
とやると....
p nested_hash
#=> {:x=>{:y=>{:z=>123}}}
となって、ネストしたモノがちゃんとでてきます...
ていうかHash#newてブロックを渡す事ができたのですね
検索するには?
込み入ったHashを検索したい場合は以下の記事を参考にしてください
hashieでHash型を便利に拡張する(その2_DeepFind) - Bye Bye Moore