Приложение падает при использовании validates_uniqueness_of на Rails с Mongoid? - PullRequest
1 голос
/ 15 июня 2019

Я использую Mongoid на Rails и добавил validates_uniqueness_of :quote на модель Quote.

Но когда появляется повторяющаяся запись, приложение вылетает, показывая следующее сообщение:

сообщение: проверка цитаты не удалась. резюме: следующие ошибки были найдены: цитата уже принята резолюция: попробуйте сохранить документ с действительными данными или удалите проверки.

Это моя модель:

class Quote
  include Mongoid::Document
  field :quote, type: String
  field :author, type: String
  field :author_about, type: String
  field :tags, type: String

  validates_uniqueness_of :quote
end

И вот что я пытаюсь сделать:

if @quotedb.save!
    return true
else
    return false
end

Он должен сохранять, если он уникален, и игнорировать, если его нет, но никогда не падать.

1 Ответ

1 голос
/ 19 июня 2019

Ваше приложение фактически не аварийно завершает работу, оно просто выдает исключение.

Когда вы вызываете метод save!, ! указывает, что оно вызовет проверку , иесли проверка завершится неудачно, возникнет исключение.

Лучшим подходом будет обработка исключения с использованием rescue, но если вас не волнует результат проверки, используйте вместо него save.

...