【发布时间】:2013-10-16 16:59:15
【问题描述】:
我想避免有人可以使用用户名“Admin”创建用户。我使用这个用户名作为主机来控制我的应用程序的一些功能。我知道有一个表达式可以验证模型记录的唯一性:
validates_uniqueness_of
但我只希望用户名“Admin”不能被创建两次。我希望有人有一个想法!谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 validation ruby-on-rails-4
我想避免有人可以使用用户名“Admin”创建用户。我使用这个用户名作为主机来控制我的应用程序的一些功能。我知道有一个表达式可以验证模型记录的唯一性:
validates_uniqueness_of
但我只希望用户名“Admin”不能被创建两次。我希望有人有一个想法!谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 validation ruby-on-rails-4
您可以使用conditionals in your validation 执行以下操作:
class Model
validates :username, uniqueness: true, if: :admin?
def admin?
username.downcase == 'admin'
end
end
话虽如此,如果我不阻止您这样做,他们会拿走我的开发者卡。
仅根据用户名是否为 admin 来建立管理员帐户会导致您的安全受到威胁。查看 ActiveAdmin 之类的东西来管理您的管理员帐户,以便它们至少与您的用户帐户分开。
【讨论】:
undefined method admin?'` 你知道为什么吗?
或者只是在你的模型中validates_uniqueness_of :username, if: -> {username == 'admin'}。
【讨论】: