Ruby on rails 创建;用户名";基于名字和姓氏的列

Ruby on rails 创建;用户名";基于名字和姓氏的列,ruby-on-rails,devise,Ruby On Rails,Devise,我正在使用Desive生成我的用户。我有一个名栏和一个姓栏。在提交表格时,我希望用户名成为第一个字母的名字,加上姓氏 first_name: Michael last_name: Hopkins user_name: mhopkins 我对rails非常陌生,不确定我把这个逻辑放在哪里了。有人能帮忙吗?最简单的方法。将其放入您的用户(或适当的)模型中 注意:请确保您首先检查名字和姓氏是否为空对于即将提出的两个愚蠢问题,我深表歉意。我刚开始学习rails,这相当令人畏惧。1.我知道这是一种方法。

我正在使用Desive生成我的用户。我有一个名栏和一个姓栏。在提交表格时,我希望用户名成为第一个字母的名字,加上姓氏

first_name: Michael
last_name: Hopkins
user_name: mhopkins

我对rails非常陌生,不确定我把这个逻辑放在哪里了。有人能帮忙吗?

最简单的方法。将其放入您的用户(或适当的)模型中


注意:请确保您首先检查名字和姓氏是否为空

对于即将提出的两个愚蠢问题,我深表歉意。我刚开始学习rails,这相当令人畏惧。1.我知道这是一种方法。但是user_name在哪里设置为prepareUserName 2的返回值呢。如果我把表单验证放在它们不能为空的地方,那会满足您的要求,对吗?1。对不起,我忘了设置属性。我刚刚更新了答案。2.不。我想,您可以在验证之前检查
,而不是在创建之前检查
。我还没考呢。我想我会尝试
验证
,以确保有名字和姓氏。然后,
在验证之后
设置字段。是的,这是更好的方法,我想你有没有机会看看这个@HungryCoder?您似乎对RoR非常了解。好消息是,此软件供大约10人使用。幸运的是,没有重复的姓氏或任何像这样愚蠢的东西!
before_create :prepare_username

def prepare_username
 self.user_name = (self.first_name[0] + self.last_name).to_s.downcase
end