ruby-on-rails - 如何检查用户名是否存在并创建一个新用户名?

标签 ruby-on-rails ruby

我想用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/

相关文章:

mysql - after_update 回调不会更新属性

ruby-on-rails - 模式迁移的非公共(public)模式

ruby-on-rails - 在 ruby​​ 中深度压缩嵌套哈希?

sql - 用于搜索表单的 Rails 条件查询

ruby-on-rails - 初学者 Rails 部署到 Heroku

ruby-on-rails - 我想要一个默认选择空白值的日期选择框

ruby - 在 64 位操作系统上安装 32 位 Ruby

sql - postgresql:选择所有关联记录都匹配条件的记录

ruby - 在 Ruby 中将两个数组相乘并获得相乘值之和的有效方法是什么?

ruby-on-rails - ruby gem如何在rails环境下工作