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

时间:2018-09-11 15:43:03

标签: ruby-on-rails devise

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

编辑完整错误消息:

  

PG :: UniqueViolation:错误:重复的键值违反了唯一键   约束“ index_users_on_username”详细信息:键   (用户名)=(超级测试)已经存在。 :插入“用户”   (“电子邮件”,“加密密码”,“ created_at”,“ updated_at”,   “用户名”)值($ 1,$ 2,$ 3,$ 4,$ 5)返回“ id”

1 个答案:

答案 0 :(得分:2)

您需要add a validation进入模型:

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

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