Монгоидные проверки не работают - PullRequest
2 голосов
/ 10 июля 2011

У меня есть модель Mongoid, и проверки вообще не работают. Нет сообщений об ошибках, нет проблем, но я могу вставить неверные данные.

class Place
  include Mongoid::Document
  include Mongoid::Timestamps
  field :address, :type => String, :required => true
  field :headline, :type => String, :required => true
  validates :headline, :presence => true, :length => { :minimum => 10, :allow_blank => false }
  validates :address, :presence => true, :length => { :minimum => 5, :allow_blank => false }
  # ...
end

Несмотря на то, что похоже, что он должен работать, модель сохраняет, не выдавая ошибку (например, значение nil или "abc").

Как мне заставить их работать?

1 Ответ

3 голосов
/ 10 июля 2011

Для меня ваши проверки работают правильно:

place = Place.create(:headline => nil, :address => nil)
puts place.persisted?  # false
puts place.valid?      # false
puts place.save        # false

Методы create и save не вызывают исключение, save возвращает false, если неудачно (неудача проверки).Метод save! вызывает следующее исключение:

Validation failed - Headline can't be blank, Headline is too short (minimum is 10 characters), Address can't be blank, Address is too short (minimum is 5 characters). (Mongoid::Errors::Validations)
...