示例:
接受的扩展名:"@blogsllc.org">
用户使用电子邮件注册"joe@blogsllc.org"将能够创建一个帐户。
想知道在Rails中实现这一点的最佳方式是什么,以及其他人将如何处理?我想象着尝试对照一堆正则表达式检查电子邮件地址的格式,但随着支持的扩展列表的增加,这可能会很乏味。
另一种方法是建立一个受支持的扩展的数据库,并根据数据库检查创建的电子邮件地址,看看扩展是否被接受,但我不确定在Rails中实现这一点的最佳方法是什么。
我希望实现一些类似于Facebook早期所做的事情。
感谢您的帮助。
编辑误解:
如果你不需要比直接匹配域(文件有扩展名,电子邮件有域(更花哨的东西,那么在@
上拆分并将第二部分与数据库列匹配是最简单的方法。
您可以添加以下代码
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
此链接将非常有用