Как проверить на ноль на объекте? - PullRequest
2 голосов
/ 09 июля 2019

Я делаю следующий вызов, чтобы получить объект Ruby, который возвращает данные из API Spotify:

spotify_track = RSpotify::AudioFeatures.find('3RmAqYZZjiSyMV40hm6rDL')

Возвращает:

#<RSpotify::AudioFeatures:0x00007fe0cc079b30 @acousticness=nil, @analysis_url="https://api.spotify.com/v1/audio-analysis/3RmAqYZZjiSyMV40hm6rDL", @danceability=nil, @duration_ms=35361, @energy=nil, @instrumentalness=nil, @key=1, @liveness=nil, @loudness=-12.186, @mode=1, @speechiness=nil, @tempo=0, @time_signature=nil, @track_href="https://api.spotify.com/v1/tracks/3RmAqYZZjiSyMV40hm6rDL", @valence=nil, @external_urls=nil, @href=nil, @id="3RmAqYZZjiSyMV40hm6rDL", @type="audio_features", @uri="spotify:track:3RmAqYZZjiSyMV40hm6rDL"> 

Когда я пытаюсь получить один из атрибутов nil, я получаю ошибку 404:

> spotify_track.acousticness
Traceback (most recent call last):
        1: from (irb):25
RestClient::NotFound (404 Not Found)

Итак, как я могу проверить, является ли атрибут nil или нет?

Обычные вещи, такие как spotify_track.acousticness.present?, spotify_track.acousticness.blank? и spotify_track.try(:acousticness), все возвращают ту же ошибку RestClient 404.

Я использую гем RSpotify , который использует REST Client гем.

1 Ответ

0 голосов
/ 09 июля 2019

Вы можете спасти и добавить к нему некоторый код,

rescue RestClient::ExceptionWithResponse => err

См. rest-client # response-callbacks-error-processing

...