2014-09-15 2 views
0

У меня есть модель пользователяMongomapper уникальность

class User 
    include MongoMapper::Document 


    key :phone, Integer, :required => true, :unique => true 
    key :is_confirmed, Boolean, :default => false 
    timestamps! 
end 

и проверки уникальности телефона, но я могу создать пользователя с таким же телефоном без error.WHY?

почему проверки уникальности не работает

ответ

1

MongoMapper использует ActiveModel:Validations, поэтому он работает почти так же, как ActiveRecord

Попробуйте это проверить: validates_uniqueness_of

validates_uniqueness_of :phone 

Validations запускаются при попытке для сохранения записи. Если валидации fail, сохранение вернет false.

Most Простые подтверждения могут быть объявлены вместе с ключами .

Пример:

class Person 
    include MongoMapper::Document 

    key :first_name, String, :required => true 
    key :last_name, String, :required => true 
    key :age,   Integer, :numeric => true 
    key :born_at,  Time 
    key :active,  Boolean 
    key :fav_colors, Array 
end 

Доступные варианты при определении keys являются:

  • : требуется - Логическое объявляет validate_presence_of
  • : уникальный - Логическое объявляет validates_uniqueness_of
  • : цифровая - Логическое объявляет validates_numericality_of
  • : Формат - Regexp, который передается validates_format_of
  • : в - массив, который передается validates_inclusion_of
  • : NOT_IN - массив, который передается to validates_exclusion_of
  • : length - Integer, Range или Hash, который передается validates_length_of