我想创建一个user
user.name
,可以在以后更改。 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"
的用户,但我想检查该名称是否已存在,然后再执行另一个名称。我怎么能这样做?
答案 0 :(得分:2)
您可以通过以下方式实现:
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
希望它有所帮助!
答案 1 :(得分:1)
如果是这样,你可能会检查它是否已经存在。
def set_a_name
return unless self.name.blank?
begin
random_user_number = rand.to_s[2..11]
try_name = "user#{random_user_number}"
end while User.exists?(name: try_name)
self.name = try_name
end