【问题标题】:Validates uniqueness but only when 'Admin' is selected as username验证唯一性,但仅在选择“管理员”作为用户名时
【发布时间】:2013-10-16 16:59:15
【问题描述】:

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

validates_uniqueness_of

但我只希望用户名“Admin”不能被创建两次。我希望有人有一个想法!谢谢

【问题讨论】:

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


    【解决方案1】:

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

    class Model
      validates :username, uniqueness: true, if: :admin?
    
      def admin?
        username.downcase == 'admin'
      end
    end
    

    话虽如此,如果我不阻止您这样做,他们会拿走我的开发者卡。

    仅根据用户名是否为 admin 来建立管理员帐户会导致您的安全受到威胁。查看 ActiveAdmin 之类的东西来管理您的管理员帐户,以便它们至少与您的用户帐户分开。

    【讨论】:

    • 抱歉,我将您的代码准确地写入了我的模型中,但我总是收到错误 undefined method admin?'` 你知道为什么吗?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-09
      • 2017-04-07
      • 1970-01-01
      • 2023-02-19
      • 2017-11-02
      • 1970-01-01
      • 2016-06-17
      相关资源
      最近更新 更多