ruby-on-rails - 如何阻止 "mail.ru"和 "163.com"电子邮件注册 (Devise + Rails 4)

标签 ruby-on-rails ruby ruby-on-rails-4 devise

我看到很多来自这些电子邮件 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/

相关文章:

ruby-on-rails - 具有多种模型的 Rails 项目组织

ruby-on-rails - 如何为 ruby​​ on rails 创建 .htaccess?

ruby-on-rails - 如何在 Rails 中实现动态 404、500 等错误页面?

mysql - Rails-使用模型文件中的方法保存时丢失数据

ruby-on-rails - 非常棘手的 Rails 验证问题

ruby-on-rails - 如何通过与Active Record关联来查找has_many中缺少关联记录的记录?

ruby - 如果字符串不为空,则连接该字符串

ruby - Ruby 或其他语言是否会在 Parrot 上运行得更快?

ruby-on-rails-4 - 使用 ruby​​ Mechanize 的整页屏幕截图

ruby-on-rails-4 - 使用 html_safe 时如何修复 Rails 中的跨站点脚本安全警告?