代码之家  ›  专栏  ›  技术社区  ›  iCyborg

如何阻止“mail.ru”和“163.com”电子邮件注册(Desive+Rails 4)

  •  3
  • iCyborg  · 技术社区  · 8 年前

    我看到很多来自这些电子邮件ID的注册,我想阻止它们。我正在使用Desive+Rails 4。

    在我的用户中。rb,我在玩

    validates :email, presence: true, format: /\w+@\w+\.{1}[a-zA-Z]{2,}/
    

    但我不知道如何使用格式来阻止这些域。有什么帮助吗?

    此外,这是正确的做法吗?或者我们是否可以有更好的方法通过Deave阻止某些域/免费电子邮件提供商?

    编辑-我找到 http://guides.rubyonrails.org/active_record_validations.html 部分 2.5格式 我可以使用的地方 无: 不过,我不知道如何阻止163的电子邮件注册。com和mail。ru,我可以使用“validates:”两倍于编写一个regexp来排除两者吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Josh Brody    8 年前

    只要把这个放在某个地方,你就可以保持你的验证原样。

    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
    
    推荐文章