0

例子:

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

使用电子邮件“joe@blogsllc.org”注册的用户将能够创建一个帐户。

想知道在 Rails 中执行此操作的最佳方法是什么,以及其他人将如何处理?我想象着尝试根据一堆正则表达式检查电子邮件地址的格式,但是随着支持的扩展列表的增加,这可能会很乏味。

另一种方法是拥有一个支持扩展的数据库,并根据数据库检查创建的电子邮件地址,以查看扩展是否被接受,但我不确定在 Rails 中实现这一点的最佳方法是什么。

我正在寻求实现类似于 Facebook 在早期所做的事情。

任何帮助表示赞赏。

4

2 回答 2

2

编辑误解:

如果您不需要比直接匹配域(文件具有扩展名,电子邮件具有域)更花哨的东西,那么只需拆分@第二部分并将其与数据库列匹配是最简单的方法。

于 2013-01-10T09:10:48.857 回答
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

此链接将很有用

于 2013-01-10T09:16:42.480 回答