在Rails中搜索嵌套哈希中的键

我在一个名为myAuth的对象中捕获了以下嵌套哈希(来自Ominauth-Facebook)

 <Ominauth::AuthHash credentials extra=#<Hashie:: Mash raw_info=#>> 

我想提取电子邮件,所以我使用:

 myAuth['extra']['raw_info']['email'] 

但是,我想搜索整个哈希并获取关键email的值,而不知道确切的哈希结构。 我该怎么办呢?

谢谢。

不知道这是否是最佳解决方案,但我会这样做:

 h = {seal: 5, test: 3, answer: { nested: "damn", something: { email: "yay!" } } } def search_hash(h, search) return h[search] if h.fetch(search, false) h.keys.each do |k| answer = search_hash(h[k], search) if h[k].is_a? Hash return answer if answer end false end puts search_hash(h, :email) 

如果密钥存在或返回,则返回值。