设计为重复的用户名创建错误消息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计为重复的用户名创建错误消息相关的知识,希望对你有一定的参考价值。

我正在使用rails 5.2 with devise。我在我的数据库中为设计用户添加了一个唯一的用户名字段。尝试使用重复的用户名注册时,我的数据库收到ActiveRecord :: RecordNotUnique错误。我想有一个错误消息,就像设计默认的电子邮件。谢谢!

编辑完整的错误消息:

PG :: UniqueViolation:ERROR:重复键值违反唯一约束“index_users_on_username”DETAIL:Key(username)=(supertest)已存在。 :INSERT INTO“users”(“email”,“encrypted_pa​​ssword”,“created_at”,“updated_at”,“username”)VALUES($ 1,$ 2,$ 3,$ 4,$ 5)返回“id”

答案

你需要add a validation到你的模型:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :confirmable, :recoverable, :validatable # ...
  validates_uniqueness_of :username
end

验证可以防止低级别的ActiveRecord::RecordNotUnique异常,因为如果验证失败,Rails将不会尝试写入db。

以上是关于设计为重复的用户名创建错误消息的主要内容,如果未能解决你的问题,请参考以下文章