In Devise Validatable模块包含 validates_uniqueness_of :email, :allow_blank => true, :if => :email_changed?
如何禁用此验证程序?在Devise中跳过电子邮件验证
4
A
回答
2
我怕你会发现它非常难看,但:
在1.x中色器件(我们正在谈论分支1.x的,对不对?)没有选项来选择它,所以唯一的办法就是在设计指令后删除类定义中不必要的验证器:
class用户扩展Mongoid文档(不管这里的AR是否相同,只需在下面的delete_if方法中放置AR Validator类)并包含设计初始化程序这种破解似乎有效:
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
9
每Devise's own documentation on the Validatable module ...
是Validatable创建用户电子邮件地址和密码都需要验证。 这是可选的,因为您可能想自己创建验证。自动验证电子邮件是否存在,唯一且格式有效。还测试密码,确认和长度的存在。
强调我的重点。
您应该禁用Validatable
模块并推出自己的验证。
devise :database_authenticatable, :registerable, :rememberable,
:trackable, :timeoutable, :confirmable, :recoverable, :lockable
# :validatable <-- this one needs to go
审查lib/devise/models/validatable.rb
内容和相关章节拉进自己的用户类。对于目前的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. 如何在Devise中跳过validates_presence_of电子邮件
- 2. 使用devise在开发中跳过确认电子邮件
- 3. 如何使用Rails中的Authlogic跳过电子邮件验证?
- 4. Rails 3 Devise:如何发送验证电子邮件到其他电子邮件
- 5. 跳过电子邮件验证对色器件2.0
- 6. 通过电子邮件和PHP进行电子邮件验证?
- 7. 电子邮件验证过程
- 8. 通过电子邮件验证链接
- 9. 电子邮件验证javascript
- 10. 电子邮件验证PHP
- 11. PHP电子邮件验证
- 12. 梨电子邮件验证
- 13. 电子邮件验证
- 14. PHP - 电子邮件验证
- 15. ResearchKit:验证电子邮件
- 16. 电子邮件ID验证
- 17. Firebase电子邮件验证
- 18. Jquery - 验证电子邮件
- 19. NSRegularExpression验证电子邮件
- 20. 电子邮件验证
- 21. 电子邮件验证php
- 22. JavaScript电子邮件验证 - @
- 23. 在C中验证电子邮件#
- 24. 在php中的电子邮件验证?
- 25. 电子邮件在sail.js中验证
- 26. 电子邮件未在Firebase中验证
- 27. 在PHP中验证电子邮件?
- 28. 在iPhone中验证电子邮件
- 29. 在PHP 5.2中验证电子邮件?
- 30. 经典ASP电子邮件验证电子邮件存在
您是否尝试从模型中删除验证模块 – Viren 2012-03-28 13:03:52