我仍然不擅长在Ruby / Rails中创建自己的方法。我只是想使用after_save回调将数据插入我的“用户名”字段。
我想从注册时获得输入的电子邮件中创建用户名。这是我想要做的:
after_save :create_username
def create_username
self.username = self.email.split('@').first
end
我希望用户名是用户在注册时提交的电子邮件字段中的@符号之前的所有内容。
我知道RegEx:^ [^ - ] *也会起作用,但我不确定如何将RegEx合并到一个函数中。
我认为使用after_save将是正确的回调,但如果我错了,请推荐别的东西。
我该如何做到这一点?
感谢。
答案 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]
很多选择:)