我正在使用devise的rails 5.2。我在数据库中为设计用户添加了唯一的用户名字段。 尝试使用重复的用户名注册时,我的数据库出现ActiveRecord :: RecordNotUnique错误。我想收到一条错误消息,就像devise的电子邮件默认设置一样。谢谢!
编辑完整错误消息:
PG :: UniqueViolation:错误:重复的键值违反了唯一键 约束“ index_users_on_username”详细信息:键 (用户名)=(超级测试)已经存在。 :插入“用户” (“电子邮件”,“加密密码”,“ created_at”,“ updated_at”, “用户名”)值($ 1,$ 2,$ 3,$ 4,$ 5)返回“ id”
答案 0 :(得分:2)
您需要add a validation进入模型:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:confirmable, :recoverable, :validatable # ...
validates_uniqueness_of :username
end
验证可防止发生低级别的ActiveRecord::RecordNotUnique
异常,因为如果验证失败,Rails不会尝试写入数据库。