dig_and_replace allows you to update nested hashes easier
{a: true}.dig_and_replace(false, :a) 
=> false
{a: {b: false}}.dig_and_replace("false", :a,:b) 
=> "false"
a = {a: {b: false}}
a.dig_and_replace("hi",:a,:c)
=> "hi"
a
=> {:a=>{:b=>false, :c=>"hi"}}
a = {a: {b: false}}
a.dig_and_replace("hi",:a,:b,:c)
=> nil
a
 => {:a=>{:b=>false}} 
a = {a: {b: false}}
a.dig_and_replace("not nested",:a)
=> "not nested"
a
=> {:a=>"not nested"} 
a = { Order:  { Person:  { Address:  { zip: "123" }}}}
b = [:Order, :Person, :Address, :zip]
a.dig_and_replace("321",*b)
=> "321"
a
=> {:Order=>{:Person=>{:Address=>{:zip=>"321"}}}}