В Devise Validatable module содержится validates_uniqueness_of :email, :allow_blank => true, :if => :email_changed?
Как отключить этот валидатор?Пропустить проверку подлинности в Devise
ответ
Я боюсь, что вы найдете, что это очень некрасиво, но:
В 1.x завещанию (речь идет о веткой 1.x, верно?) Нет никаких вариантов, чтобы выбрать его, таким образом, остается только удалить ненужный валидатор в определении класса после директив разработки:
класс Пользователь расширяет документ Mongoid (без матер, AR здесь же, просто разместите класс AR Validator в методе delete_if ниже) и содержит инициализаторы разработки, поэтому этот взлом, похоже, работает:
User._validators[:email].try{ |validators|
validators.delete_if{ |validator|
validator.is_a? Mongoid::Validations::UniquenessValidator
}
}
Таким образом, определение класса пользователя может быть:
class User
include Mongoid::Document
devise :database_authenticatable, :registerable, :validatable
_validators[:email].try{ |validators|
validators.delete_if{ |validator|
validator.is_a? Mongoid::Validations::UniquenessValidator
}
}
# ...
end
Per Devise's own documentation on the Validatable module ...
подтверждаемых создает все необходимые валидаций для пользователя электронной почты и пароль. Это необязательно, так как вы можете захотеть создать валидации самостоятельно. Автоматически проверять, присутствует ли электронное письмо, уникальный и его формат. Также проверяет наличие пароля, подтверждения и длины.
Смелый мой акцент.
Вы должны отключить модуль Validatable
и свернуть свои собственные проверки.
devise :database_authenticatable, :registerable, :rememberable,
:trackable, :timeoutable, :confirmable, :recoverable, :lockable
# :validatable <-- this one needs to go
Обзор содержание lib/devise/models/validatable.rb
и тянуть соответствующие разделы в свой собственный класс User. Для текущей версии 3.2.x
линии, она должна выглядеть примерно так ...
class User < ActiveRecord::Base
# From Devise module Validatable
validates_presence_of :email, if: :email_required?
validates_uniqueness_of :email, allow_blank: true, if: :email_changed?
validates_format_of :email, with: email_regexp, allow_blank: true, if: :email_changed?
validates_presence_of :password, if: :password_required?
validates_confirmation_of :password, if: :password_required?
validates_length_of :password, within: password_length, allow_blank: true
# [ ... ] The rest of your model stuff
protected
# From Devise module Validatable
def password_required?
!persisted? || !password.nil? || !password_confirmation.nil?
end
# From Devise module Validatable
def email_required?
true
end
end
Затем сделайте изменения, которые необходимы.
Сценарий реального мира: Я использую Paranoia gem для ряда проектов, которые не будут работать с этим модулем. Поэтому я удаляю его и настраиваю проверку уникальности электронной почты, чтобы читать как ...
validates_uniqueness_of :email, scope: :deleted_at
- 1. Rails - Пропустить проверку подлинности не работает
- 2. Как пропустить проверку подлинности Windows в MVC 5
- 3. Пропустить проверку подлинности для конкретного действия элемента в ActiveAdmin
- 4. Пропустить проверку электронной почты для OmniAuth-твиттер на DEViSE 2.0
- 5. Как я могу заставить PasswordController Devise пропустить проверку пользователя?
- 6. Аутентифицированные и не прошедшие проверку подлинности маршруты для Devise
- 7. BDD: Как проверить проверку подлинности при использовании Devise?
- 8. Как перенаправить Devise на регистрацию и проверку подлинности?
- 9. Пропустить проверку некоторых членов модели Devise во время сброса пароля
- 10. Убрать проверку подлинности электронной почты
- 11. Пропустить проверку подлинности Windows с помощью Selenium/Jenkins
- 12. Как настроить проверку подлинности Windows?
- 13. Как пропустить проверку has_secure_password
- 14. как применить проверку подлинности
- 15. django пропустить проверку поля
- 16. Пропустить проверку при необходимости
- 17. Пропустить проверку модели в Sails.js?
- 18. Пропустить проверку Eclipse для build.xml
- 19. Пропустить проверку спящего режима временно
- 20. BootstrapValidator пропустить проверку, если пустой
- 21. Как пропустить validates_presence_of электронной почты в Devise
- 22. Пропустить проверку Ruby on Rails
- 23. Rails: Пропустить проверку на autosave
- 24. Пропустить проверку типа неиспользуемых параметров
- 25. Пропустить обязательную проверку на закладке
- 26. как пропустить проверку корректности XML
- 27. Запрос на проверку подлинности MVC
- 28. Как отключить проверку подлинности форм
- 29. Как пропустить проверку определенных ограничений?
- 30. Как пройти проверку подлинности Windows
Вы пытались удалить модули проверки из модели – Viren