Подтвердить что ты не робот

Попытка получить POST для возврата 400 плохих запросов

У меня есть метод create, который создает новую модель через ассоциацию, и я ожидал, что она вернет ответ 400 с некоторым текстом, если в запросе POST не было никаких параметров. Однако я получаю сообщение об ошибке.

Это в Rails 4.0.2

:

  def create
    @cast_profile = current_user.build_cast_profile(cast_profile_params)
    if @cast_profile.save
      redirect_to cast_profile_path
    else
      render :edit
    end
  end

  def cast_profile_params
    params.require(:cast_profile).permit(:name, :email, :public)
  end

Если я передаю params, все это прекрасно, но я пытаюсь протестировать сценарий неудачных запросов. Здесь ошибка:

ActionController::ParameterMissing: param not found: cast_profile

Я мог бы спасти его явно, но я думал, что сильные параметры должны были делать это автоматически.

4b9b3361

Ответ 1

Поведение выглядит следующим образом:

Обработка неиспользуемых ключей

По умолчанию ключи параметров, которые явно не разрешены, будут регистрируется в среде разработки и тестирования. В других средах эти параметры будут просто отфильтрованы и проигнорированы.

Кроме того, это поведение можно изменить, изменив Свойство config.action_controller.action_on_unpermitted_parameters в ваши файлы окружения. Если установлено: log неперечисленные атрибуты будут быть зарегистрированным, если установлено значение: повысить исключение.

(источник)

Я предлагаю избавиться от этого исключения с 400 статусом (Bad Request):

rescue_from ActionController::ParameterMissing do
  render :nothing => true, :status => :bad_request
end