Ruby on rails “如何阻止”;mail.ru“;及;163.com“;来自注册的电子邮件(Desive&x2B;Rails 4)
我看到很多来自这些电子邮件ID的注册,我想阻止它们。我正在使用Desive+Rails 4 在我的user.rb中,我正在使用Ruby on rails “如何阻止”;mail.ru“;及;163.com“;来自注册的电子邮件(Desive&x2B;Rails 4),ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,我看到很多来自这些电子邮件ID的注册,我想阻止它们。我正在使用Desive+Rails 4 在我的user.rb中,我正在使用 validates :email, presence: true, format: /\w+@\w+\.{1}[a-zA-Z]{2,}/ 但我不知道如何使用格式来阻止这些域。有什么帮助吗 此外,这是正确的方法吗?还是我们可以有更好的方法通过Desive阻止某些域/免费电子邮件提供商 编辑-我发现,在2.5格式部分我可以使用而不使用:但是,我不知道如何阻止163.com
validates :email, presence: true, format: /\w+@\w+\.{1}[a-zA-Z]{2,}/
但我不知道如何使用格式来阻止这些域。有什么帮助吗
此外,这是正确的方法吗?还是我们可以有更好的方法通过Desive阻止某些域/免费电子邮件提供商
编辑-我发现,在2.5格式部分我可以使用而不使用:但是,我不知道如何阻止163.com和mail.ru的电子邮件注册,我是否可以使用“validates:”两倍于编写一个regexp来排除这两个注册将很困难 只要把它放在某个地方,你就可以让验证保持原样
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
class用户
谢谢,我已经推送了代码,将等待一天看它是否工作。更新-经过几天的测试,代码工作正常。你知道这些是机器人吗?我以前有过机器人注册,你通常可以在注册表上用蜜罐来阻止它们。此gem应该可以帮助您:。如果你不想使用新的gem,你仍然可以使用这个概念。基本上,你可以添加一个隐藏的表单字段——机器人会笨到填不出来(但真正的用户不会)。如果这个领域有什么东西,它是一个机器人,你阻止注册。这有一个额外的好处,因为它应该阻止任何域这样做。是的,我也有我的理由为机器人注册。感谢gem的建议,我正在安装它并收紧注册流程。