Я получаю доступ к API Amazon AWS с помощью гема ruby-aaws, но, не вдаваясь в подробности об API или геме, думаю, что моя проблема носит более общий характер.
КогдаЯ запрашиваю API, в итоге получаю «массив объектов», назовем его item
, содержащий ответ API.Я могу легко получить доступ к данным в массиве, например, puts item.item_attributes.artist.to_s
. Теперь API возвращает атрибуты, идентификаторы которых являются зарезервированными словами в Rails, например, format или binding .
Таким образом:
puts item.item_attributes.format.to_s
вернет метод не найден
, в то время как
puts item.item_attributes.binding.to_s
вернет некоторый хеш объекта, например #<Binding:0xb70478e4>
.
Я вижу, что есть значения под этим именем при выполнении
puts item.item_attributes.to_yaml
Фрагмент из полученного yaml шоу Artist и привязки :
--- !seq:Amazon::AWS::AWSArray<br>
- !ruby/object:Amazon::AWS::AWSObject::ItemAttributes<br>
__val__:<br>
artist: !seq:Amazon::AWS::AWSArray<br>
- !ruby/object:Amazon::AWS::AWSObject::Artist<br>
__val__: Summerbirds in the Cellar<br>
binding: !seq:Amazon::AWS::AWSArray<br>
- !ruby/object:Amazon::AWS::AWSObject::Binding<br>
__val__: Vinyl
Возможно, это было очень подробное объяснение с очень простым решением, но я не могу найти решение.
edit
Наконец-то нашел.Я думаю, это потому, что это массив объектов, да ... puts item.item_attributes[0].binding.to_s