【问题标题】:Unique usernames in Devise for RailsDevise for Rails 中的唯一用户名
【发布时间】:2012-10-02 07:30:41
【问题描述】:

我关注Devise's instructions for using usernames in addition to emails 进行登录。效果很好,除了人们可以使用重复的用户名注册。如果有人尝试使用重复的电子邮件地址进行注册,他们会在注册页面上看到以下错误消息:

1 个错误禁止保存此用户:

Email has already been taken

我想要一些非常相似的用户名。我该如何实现?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise ruby-on-rails-3.2


    【解决方案1】:

    您应该使用唯一性验证器。在 user.rb 中添加以下内容:

    validates_uniqueness_of :username
    

    more about this validator

    【讨论】:

    • 完美,错误信息正是我所希望的:“用户名已被占用”。
    • 我认为当您更改用户名然后想要将其更改回来时,即 - 当您想要编辑您的个人资料时,这将不起作用。例如,如果您想将用户名从 abc 更改为 abc1,它会起作用,但如果您想将其更改回 abc 并点击更新按钮,您将收到“用户名已被占用”错误
    • @Nicholas 我相信您在代码中创建了两个模型,或者涉及其他一些问题。
    【解决方案2】:

    请注意,您可能希望用户名唯一,但也不区分大小写,因此您最终不会同时使用用户名和用户名:

    class User < ApplicationRecord
      validates :username, presence: true, uniqueness: { case_sensitive: false }
      # Rest of user model
    end
    

    来自Devise wiki

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多