有没有办法根据Rails中的域验证注册电子邮件?

时间:2013-01-10 09:08:06

标签: ruby-on-rails ruby-on-rails-3

示例:

接受的扩展程序:“@ blogsllc.org”

用户注册电子邮件“joe@blogsllc.org”即可创建帐户。

想知道在Rails中执行此操作的最佳方法是什么以及其他人如何处理此问题?我想过尝试检查电子邮件地址的格式与一堆正则表达式,但这可能是乏味的,因为支持的扩展列表增长。

执行此操作的另一种方法是拥有受支持扩展的数据库,并针对数据库检查创建的电子邮件地址,以查看扩展是否被接受,但我不确定实现此目的的最佳方式是什么在Rails中。

我希望实现类似于Facebook早期所做的事情。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:2)

错误理解

编辑

如果您不需要比域名的直接匹配(文件具有扩展名,电子邮件具有域名)更有趣,只需在@上拆分并将第二部分与数据库列匹配即可最简单的方法。

答案 1 :(得分:0)

您可以添加以下代码

class EmailValidator < ActiveModel::EachValidator
 def validate_each(record, attribute, value)
  unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
   record.errors[attribute] << (options[:message] || "is not an email")
  end
 end
end

class Person < ActiveRecord::Base
 validates :email, :presence => true, :email => true
end

This Link will be useful