Как отобразить пользовательское сообщение об ошибке в JSON API active_model_erializers - PullRequest
0 голосов
/ 28 октября 2019

Как говорят AMS docs , мы можем использовать ActiveModel::Serializer::ErrorSerializer для генерации ответа об ошибках JSON API. Кажется, что он вызывает errors и предполагает наличие объекта ActiveModel. Таким образом, приведенный ниже код работает и отправляет сообщение об ошибке, но не код (например, код 500), и он также не использует ErrorSerializer.

def user_not_authorized
  render jsonapi: errors_response, status: :unathorized
end

def errors_response
    {
      errors:
        [
          { message: 'You are not authorized to perform this action.' }
        ],
      title:  'Invalid Attribute'
    }
  end

Более того, он отображается вconsole:

Rendered ActiveModel::Serializer::Null with Hash

При попытке использовать ErrorSerializer следующим образом:

def user_not_authorized
    render jsonapi: errors_response, status: :unathorized, serializer: ActiveModel::Serializer::ErrorSerializer
end

выдает ошибку:

NoMethodError (undefined method `errors' for #<Hash:0x00007fcf12d84d78>)

Возникла проблема открывается в репозитории AMS по этому поводу и выглядит так, как будто оно не реализовано. Любая идея о том, как правильно сделать это в приложении Rails API?

...