Rails - 邮箱唯一性

4
在Rails中,我们可以使用uniqueness:true。然而对于像Google这样的电子邮件服务提供商,可能会出现以下情况:
myemail+123@gmail.com
my.email@gmail.com
myemail@gmail.com

所有这些实际上都是一封电子邮件。有没有其他方法(除了使用正则表达式进行检查)来进行检查?


我想我仍然会使用正则表达式。如果我问一下,你为什么不想使用它呢? - rails4guides.com
我原以为会有一些库可以做到这一点。显然,Devise也不会检查到这个唯一性级别。 - Tommy
1
我不知道,但你可能是对的。这个用例似乎有点棘手,我不确定你是否真的希望你的应用程序足够灵活,以将上述电子邮件地址识别为同一地址。如果你的正则表达式不完美,你可能会打开一个安全漏洞。 - rails4guides.com
1
你为什么要这样做呢?仅仅因为GMail将他们可能的邮件地址分开,这并不排除在另一个提供者中类似的地址可能属于不同的人。 - Ulrich Thomas Gabor
好的,有很多原因。但在我的情况下,用户只能使用一个电子邮件地址注册多次。你可能会提到电子邮件确认等等,但对于我的情况来说,这是过度杀伤力的。 - Tommy
这在处理垃圾注册时非常有用,因此这是一个完全合理的问题。此外,所描述的功能可以限制在gmail.com上。 - Richard
1个回答

0

@ 符号之前的部分称为 local-part,每个与电子邮件相关的 RFC 都将其定义为不透明值,它是邮箱的标识符。例如,RFC-5322

local-part 部分是一个依赖于域的字符串。在地址中,它被解释为特定主机上特定邮箱的名称。

如果您要实现此自定义标签和点的处理方式,则会违反 RFC。这绝不是一个好主意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接