首页 > 解决方案 > 为重复的用户名设计创建错误消息

问题描述

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

编辑完整的错误信息:

PG::UniqueViolation:错误:重复的键值违反了唯一约束“index_users_on_username”详细信息:键(用户名)=(超级测试)已经存在。: INSERT INTO "users" ("email", "encrypted_pa​​ssword", "created_at", "updated_at", "username") VALUES ($1, $2, $3, $4, $5) 返回"id"

标签: ruby-on-railsdevise

解决方案


您需要向模型添加验证

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

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


推荐阅读