Как правильно отобразить объект nil, используя адаптер JSON-API на Rails? - PullRequest
0 голосов
/ 02 октября 2018

Я разрабатываю бэкэнд API Rails, совместимый со стандартом JSON-API .Для сериализации своих ресурсов я использую гем Сериализаторы активной модели вместе с адаптером json_api .

В соответствии со спецификацией JSON-API я могу получитьсвязанный ресурс следующим образом:

GET /articles/1/author HTTP/1.1
Accept: application/vnd.api+json

Приведенный выше пример может быть использован для поиска автора статьи.Если автор вышеприведенной статьи отсутствует, запрос GET к этому связанному ресурсу должен возвращаться:

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
  "links": {
    "self": "http://example.com/articles/1/author"
  },
  "data": null
}

Я реализовал в своем контроллере следующее действие, которое прекрасно работает, когда автор существует.Если автор отсутствует (т. Е. Ноль), возвращается тело null .Однако я ожидал получить правильный ответ JSON, соответствующий спецификации JSON-API, такой как пример, который я только что представил выше.

def show_author                                                         
    render json: @article.author, status: :ok                     
end

Мой текущий обходной путь:

def show_author                                                       
    author = @article.author      
    if author.nil?                                                      
        render json: {data: nil}, status: :ok                                   
    else                                                                      
        render json: author, status: :ok                                  
    end                                                                       
end 

Кажется, моя реализация не лучший способ обработки объектов nil.Что если мы решим использовать другой адаптер, а не JSON-API?Я что-то упустил?

Я использую:

  • Rails 5.1.4
  • active_model_serializers 0.10.7
...