验证唯一性,但仅在选择“管理员”作为用户名时

时间:2013-10-16 16:59:15

标签: ruby-on-rails ruby-on-rails-3 validation ruby-on-rails-4

我想避免有人可以使用用户名“Admin”创建用户。我使用这个用户名作为主机来控制我的应用程序的一些功能。我知道有一个表达式来验证模型记录的唯一性:

validates_uniqueness_of

但我只想要用户名'Admin'不能创建两次。我希望有人有个主意!感谢

2 个答案:

答案 0 :(得分:2)

您可以使用conditionals in your validation执行以下操作:

class Model
  validates :username, uniqueness: true, if: :admin?

  def admin?
    username.downcase == 'admin'
  end
end

话虽如此,如果我不劝阻你这样做,他们会带走我的开发卡。

仅根据用户名是否为管理员来设置管理员帐户,这样可以确保您的安全受到威胁。请查看ActiveAdmin之类的内容,以便管理您的管理员帐户,使其与您的用户帐户分开至少

答案 1 :(得分:1)

或只是模型中的validates_uniqueness_of :username, if: -> {username == 'admin'}