1

是否可以使用设计自动根据他的电子邮件创建用户名?

在注册页面上,我只有电子邮件和密码字段。

例如,当用户使用电子邮件创建新帐户时randomname@gmail.com,我希望他的用户名自动变为randomname. 我怎样才能实现它?

4

2 回答 2

8

您可以使用正则表达式获取电子邮件地址的第一部分,如^[^@]+,这将返回从字符串开头开始的所有内容@

^ /* start of string or line */
[^@] /* character class capturing everything except @ */
+ /* match must happen atleast one time */

要将用户名添加到数据库中,可以使用回调

class User < ActiveRecord::Base
  before_create :set_username

  private
    def set_username
      self.username = self.email[/^[^@]+/]
    end
end
于 2012-05-06T21:33:21.267 回答
1

要考虑名称相同但 URL 不同的电子邮件,您可以在末尾添加一个随机数。

self.username = "#{self.email[/^[^@]+/]}-#{SecureRandom.hex(1)}"

这将返回hoobas-1fhoobas-3c上述评论中的两封电子邮件。

于 2017-06-02T07:24:10.367 回答