bodrovis/ChgkRating

View on GitHub
docs/resources_ru.md

Summary

Maintainability
Test Coverage
# Доступные типы ресурсов

Ресурс — это объект, содержащий данные, полученные через API (например, `Team` или `Tournaments`).

## Модель

Модель представляет одиночную сущность: например, отдельного игрока или отдельную команду. Каждая модель имеет набор атрибутов (таких, как имя, фамилия, город и т.п.), а также может отвечать на различные вспомогательные методы. Пример работы с моделью:

```ruby
team = client.team 1 # Загружаем команду с идентификатором 1
team.name # Получаем название команды
team.recap(10) # Получаем состав команды в сезоне 10. Этот метод возвращает коллекцию
```

## Коллекция

Коллекция — это объект, созданный на основе обычного массива или хэша. Обход коллекции можно выполнить с помощью обычного метода `#each`, а получить доступ к отдельным элементам — с помощью `[]`. Доступны и другие методы, определённые в модуле [Enumerable](https://ruby-doc.org/core-2.4.1/Enumerable.html), за исключением `#to_a` and `#to_h`, у которых есть некоторые особенности (см. раздел Атрибуты и "сырые" версии объектов ниже). Некоторые коллекции могут отвечать на другие методы, например, `#tournament_id` или `#season_id`.

Таким образом, `Players` — это коллекция, которая содержит несколько моделей `Player`. `Teams` — это тоже коллекция,а `Team` — модель. Обратите внимание, что при загрузке коллекции модели внутри могут не содержать некоторую информацию:

```ruby
players = client.players # Загружаем всех игроков
players.first.comment # Вернёт `nil` так как API не предоставляет данную информацию при загрузке множества игроков
```

Это происходит потому, что так устроен сам API, но данную проблему можно решить с помощью [принудительной загрузки данных](/loading_ru).

## Атрибуты и "сырые" версии объектов

Следует отметить, что названия атрибутов не всегда соответствуют атрибутам, которые изначально возвращает API. Это сделано для удобства, так как многие атрибуты API имеют слишком длинные имена: скажем, `idteam` или `idtournament`. Если мы уже знаем, что загрузили информацию о турнире, то будет немного странно писать `tournament.idtournament` для получения идентификатора турнира — гораздо проще будет сказать `tournament.id`. Все доступные атрибуты перечислены в соответствующих разделах.

В некоторых случаях может потребоваться конвертировать объект обратно в его "сырую форму", которая совпадает с той, что изначально возвращает API. Предположим, если имеется модель `Team`, её можно легко конвертировать в обычный хэш с помощью метода `#to_h`. Ключи данного хэша будут полностью идентичны тем, которые используются в API. Обратите внимание, что:

* Модели могут быть конвертированы только в хэши с помощью `#to_h`.
* Большинство коллекций могут быть конвертированы только в массивы с помощью метода `#to_a`. Все модели внутри коллекции будут также конвертированы в хэши. Таким образом, вы получите массив хэшей.
* Некоторые коллекции (например, список турниров, сгруппированных по сезонам, в которых участвовала команда) конвертируются только в хэши, и не отвечают на метод `#to_a`. Для каждой коллекции указано, к какому типу она принадлежит.