このSOの回答から、ネストされたハッシュ値をその場で作成できます。
hash = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }
したがって、たとえば:
hash = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }
hash['a']['b']['c'] = { 'key' => 'value' }
#=> {'a' => { 'b' => { 'c' => { 'key' => 'value' }}}}
ここまでは順調ですね。
私はこれを必要とする:
hash = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }
hash['a', 'b', 'c'] = { 'key' => 'value' }
#=> {'a' => { 'b' => { 'c' => { 'key' => 'value' }}}}
階層に存在する他のハッシュ値を保持し、必要に応じて新しいハッシュを作成することをお勧めします。
私はルビーのメタプログラミングにかなり慣れていないので、助けていただければ幸いです。