我想用user.name
创建一个user
,以后可以更改。 user.name
是唯一的,我生成的名称以 "user"
开头,后跟随机数。这是我的模型的样子:
class User < ActiveRecord::Base
before_validation :set_a_name, on: :create
validates :name, presence: true,
uniqueness: { case_sensitive: false }
private
def set_a_name
if self.name.blank?
random_user_number = rand.to_s[2..11]
self.name = "user#{random_user_number}"
end
end
end
这确实创建了一个名称类似于 "user12345634"
的用户,但我想检查该名称是否已存在,如果存在则执行不同的名称。我怎么能这样做?
最佳答案
您可以通过以下方式实现:
def set_a_name
while self.name.blank? or User.find_by_name(self.name).present?
random_user_number = rand.to_s[2..11]
self.name = "user#{random_user_number}"
end
end
希望对您有所帮助!
关于ruby-on-rails - 如何检查用户名是否存在并创建一个新用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297882/