Рассмотрим "человека", хранящегося в хэше. Два примера:
fred = {:person => {:name => "Fred", :spouse => "Wilma", :children => {:child => {:name => "Pebbles"}}}}
slate = {:person => {:name => "Mr. Slate", :spouse => "Mrs. Slate"}}
Если у "персоны" нет детей, то элемент "дети" отсутствует. Итак, для мистера Сланца мы можем проверить, есть ли у него родители:
slate_has_children = !slate[:person][:children].nil?
Итак, что, если мы не знаем, что "сланец" - это хэш "человека"? Рассмотрим:
dino = {:pet => {:name => "Dino"}}
Мы больше не можем легко проверять детей:
dino_has_children = !dino[:person][:children].nil?
NoMethodError: undefined method `[]' for nil:NilClass
Итак, как бы вы проверили структуру хэша, особенно если он глубоко вложен (даже глубже, чем приведенные здесь примеры)? Может быть, лучше спросить: что такое «Рубиновый способ» сделать это?