Last Updated: February 25, 2016
·
742
· bscott

Hash unest method

class Hash
 def unnest
   new_hash = {}
   each do |key,val|
      if val.is_a?(Hash)
        new_hash.merge!(val.prefix_keys("#{key}."))
      else
        new_hash[key] = val
      end
  end
    new_hash
end

  def prefix_keys(prefix)
    Hash[map{|key,val| [prefix + key, val]}].unnest
   end
  end

https://gist.github.com/bscott/5577573#file-hash-unnest-rb