Сообщество IT-специалистов
Ответы на любые вопросы об IT
Профессиональное развитие в IT
hash = {:a => {:b => [{:c => old_val}]}} keys = [:a, :b, 0, :c] new_val = 10
a = {:a => {:b => [{:c => 1}]}} b = [:a, :b, 0, :c] d = b.pop b.inject(a) {|s,k| s[k]}[d] = 20
keys[0...-1].inject(hash, &:fetch)[keys.last] = new_val