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

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。

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

为啥使用用户定义的异常而不是简单地显示错误消息[重复]

在 Swift 中向用户显示网络错误消息

Python Vigenere 代码重复错误

重新附加时片段创建/恢复重复视图

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

我的 SQL 创建表为语法错误 [重复]