Mongoid :: Errors :: DocumentNotFound возникает даже после спасения

У меня есть контроллер Rails, в котором этот метод запускается как before_action:

  def authenticate_user
    Knock::AuthToken.new(token: token).entity_for(User)
  rescue Mongoid::Errors::DocumentNotFound
    render nothing: true, status: 401
  end

Несмотря на то, что я могу проверить, что он спасает ошибку (точка останова byebug запускается под оператором rescue), ее все же удается активировать сразу после:

Mongoid::Errors::DocumentNotFound (
message:
  Document(s) not found for class User with id(s) 1.
summary:
  When calling User.find with an id or array of ids, each parameter must match a document in the database or this error will be raised. The search was for the id(s): 1 ... (1 total) and the following ids were not found: 1.
resolution:
  Search for an id that is in the database or set the Mongoid.raise_not_found_error configuration option to false, which will cause a nil to be returned instead of raising this error when searching for a single id, or only the matched documents when searching for multiples.):

app/controllers/api/base_controller.rb:12:in `authenticate_user'

Я много лет использую ключевое слово rescue в Ruby и никогда с ним не сталкивался.

Что я бегу:

  • Рубин 2.5
  • Рельсы 5.2
  • Монгоид 7.0.1

Почему ошибка возникает, даже когда я ее спасаю, и как я могу предотвратить возникновение ошибки?

Какой у Вас вопрос?

sawa 22.05.2018 05:20

@sawa Извините, я думал, что это неявно, но поясню. Почему кажется, что ошибка возникает, даже когда я ее спасаю, и как я могу предотвратить возникновение ошибки? Я не помню, чтобы когда-либо возникала такая ошибка, "всплывающая" при спасении.

Ravenstine 22.05.2018 05:33
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
2
536
1

Ответы 1

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

В вашем mongoid.yml вам необходимо установить

raise_not_found_error: false

См. Пример эта секция в документации Mongoid.

Другие вопросы по теме