2013-02-27 2 views
0

У меня есть params hash, который состоит из хэшей хешей, и иногда у этих hash есть электронное письмо. Каков наилучший способ получить все электронные письма? Параметры могут быть более глубокими, чем 3 уровня. Я только доходил до прохождения каждого из Params, но я не могу понять, как сделать вложенный поискполучение списка писем в нерегулярном хеше

params = { 
    :email => '[email protected]', 
    :name => 'foo bar', 
    '0' => { 
    :name => 'My Name', 
    :email => '[email protected]', 
    '0' => { 
     :name => 'Another Name', 
     :email => '[email protected]' 
    } 
    } 
} 

ответ

1

немного хак, но вы можете сделать следующее (не проверено). Если вам нужно их в массиве, можно объявить переменную экземпляра за пределами метода и просто использовать его вместо puts v

def get_email(hash) 
    hash.each do |k,v| 
    if v.is_a?(Hash) 
     get_email v 
    elsif k.to_sym == :email 
     puts v 
    end 
    end 
end 
Смежные вопросы