创建用户名after_save的方法

时间:2014-01-18 05:06:22

标签: ruby-on-rails ruby ruby-on-rails-4

我仍然不擅长在Ruby / Rails中创建自己的方法。我只是想使用after_save回调将数据插入我的“用户名”字段。

我想从注册时获得输入的电子邮件中创建用户名。这是我想要做的:

after_save :create_username
def create_username
    self.username = self.email.split('@').first
end

我希望用户名是用户在注册时提交的电子邮件字段中的@符号之前的所有内容。

我知道RegEx:^ [^ - ] *也会起作用,但我不确定如何将RegEx合并到一个函数中。

我认为使用after_save将是正确的回调,但如果我错了,请推荐别的东西。

我该如何做到这一点?

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用regex

完成此操作
email = "someguy@example.com"
@username = email.gsub(/@.*/,'')
# => "someguy"

就你的实施而言。我不会以用户的用户名是他们的电子邮件的方式构建产品,因为人们重视他们的隐私。您也不需要after_save回调。这在这里没有意义。

您可以从email获取db并在其上运行上面的代码,以便您从自己的观点中调用@username

答案 1 :(得分:0)

这是我用同样的方式处理用户名时使用的。

after_save :create_username

protected

def create_username
  username = email[/(.*)@.*/, 1]
end

可以省略self对象,因为如果没有引用任何对象,ruby假定您要调用self上的方法。

另一种选择是:

email.match(/(.*)@.*/)[1]

很多选择:)