我看到很多来自这些电子邮件 ID 的注册,我想阻止他们。我正在使用 Devise + Rails 4。
在我的 user.rb 中,我正在玩
validates :email, presence: true, format: /\w+@\w+\.{1}[a-zA-Z]{2,}/
但我不确定如何使用格式来阻止这些域。有什么帮助吗?
这是否是正确的方法,或者我们是否可以有更好的方法通过 Devise 阻止某些域/免费电子邮件提供商?
编辑 - 我找到了 http://guides.rubyonrails.org/active_record_validations.html , 2.5 format 部分,我可以在其中使用 without: 仍然,我不确定如何阻止来自 163.com 和 mail.ru 的电子邮件注册,我可以使用“验证: “两倍于编写一个正则表达式来排除两者会很困难吗?
最佳答案
只需将它放在某个地方,您就可以按原样保留您的验证。
class User < ActiveRecord::Base
EXCLUDE_DOMAINS = %w{163.com mail.ru}
before_validation do
domains = EXCLUDE_DOMAINS.join('|')
pattern = %r{@#{domains}$}
if matched_domain = pattern.match(self.email)
self.errors.add(:email, "can't be #{matched_domain}")
end
end
关于ruby-on-rails - 如何阻止 "mail.ru"和 "163.com"电子邮件注册 (Devise + Rails 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48338148/