Это тоже работает и не использует итерацию:
y = YAML.load_file('japanese_companies.yml')
result = y.select{ |x| x['company'].first['id'] == 'konami' }
result.first['company'].last['fullname'] # => "Konami Corporation"
Или, если у вас есть другие атрибуты, и вы не можете быть уверены, fullname
является последним:
result.first['company'].select{ |x| x['fullname'] }.first['fullname']
Я согласен с Ray Toal, если вы измените свой yml, это станет намного проще. E.g.:
toyota:
fullname: トヨタ自動車株式会社
konami:
fullname: Konami Corporation
При использовании вышеупомянутого yaml получение полного имени конами становится намного проще:
y = YAML.load_file('test.yml')
y.fetch('konami')['fullname']