设计。 创建用户名自动根据他的电子邮件(Devise. Create username auto

2019-09-17 01:17发布

是否有可能创建用户名通过设计自动根据他的邮件?

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

例如,当用户创建电子邮件新的帐户randomname@gmail.com ,我想,他的用户名自动成为randomname 。 我怎样才能做到呢?

Answer 1:

你可以得到的电子邮件地址的firstpart与像一个正则表达式^[^@]+ ,这会从之前的字符串的开头返回的一切@符号。

^ /* 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


Answer 2:

为了说明具有相同名称但不同的网址,你可以在末尾添加一个随机数的电子邮件。

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

这将返回hoobas-1fhoobas-3c中的注释,以两个以上的电子邮件。



文章来源: Devise. Create username automatically based on his email