我的用户模型有以下验证:
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email,
presence: true,
format: { with: VALID_EMAIL_REGEX }
除1封电子邮件外,它适用于电子邮件。我需要这封电子邮件才有效。失败的测试如下:
it 'should accept a domain with more than 4 letters', focus: true do
user.email = 'ecample@yahoo.today'
expect(user.valid?).to be(true)
end
此测试应该通过。有什么想法吗?(我完全可以通过电子邮件验证完全更改正则表达式)
这些是电子邮件字段上User模型的所有验证器:
#<EmailValidator:0x000000075b04d0
@attributes=[:email],
@options={:if=>#<Proc:0x000000075c5a10@/usr/local/rvm/gems/ruby-2.2.3@2parale/gems/devise_token_auth-0.1.37/app/models/devise_token_auth/concerns/user.rb:30>}>,
#<ActiveRecord::Validations::PresenceValidator:0x00000007414338 @attributes=[:email], @options={}>,
#<ActiveModel::Validations::FormatValidator:0x0000000740ef28 @attributes=[:email], @options={:with=>/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i}>,
#<ActiveModel::Validations::LengthValidator:0x0000000740de98 @attributes=[:email], @options={:minimum=>6, :maximum=>100}>,
#<ActiveRecord::Validations::UniquenessValidator:0x0000000740ccf0
答案 0 :(得分:1)
这似乎是devise_auth_token
gem覆盖默认的Devise电子邮件验证(https://github.com/lynndylanhurley/devise_token_auth/issues/314)导致某些人出现问题的问题。不幸的是,似乎没有一种很好的方法可以告诉gem您想要使用哪种更新的格式/验证器。这给你留下了三个非理想的选择:
对不起,似乎不是一个很好/简单的解决方法:(
干杯。
答案 1 :(得分:0)
为什么不使用python-email-validator?
安装强>:
pip install email_validator
示例用法:
from email_validator import validate_email, EmailNotValidError
email = "my+address@mydomain.tld"
try:
v = validate_email(email) # validate and get info
email = v["email"] # replace with normalized form
except EmailNotValidError as e:
# email is not valid, exception message is human-readable
print(str(e))