Как возвращать ошибку 'Unpermitted parameter' при валидации полей в REST API?

Есть код типа этого:
def safe_params(params)
    params.require(:survey).permit(:name, :question)
  end

  def update
    if @survey.update(safe_params(params))
      render json: { status: "Success" }
    else
      render json: { status: "Error", message: 'Validation errors', errors: @survey.errors }
    end
  end

в котором при указании неверного имени параметра тихо игнорируется ошибка и выводится status: "Success".

Как указать, чтобы при проверке safe_params в @survey.errors данный вид ошибок обрабатывался?
  • Вопрос задан
  • 211 просмотров
Решения вопроса 1
2ord
@2ord Автор вопроса
Можно определить в файле config/environments/development.rb на весь проект:
config.action_controller.action_on_unpermitted_parameters = :raise

Также необходимо определиться как поступать для продакшена в файле config/environments/production.rb.

Если такое поведение нужно только для контроллера API, тогда
class ApiController < ApplicationController

# <<<< добавить
  # Always raise errors on unpermitted parameters
  ActionController::Parameters.action_on_unpermitted_parameters = :raise
# <<<<

end
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы