ruby-on-rails - 为重复的用户名设计创建错误消息
问题描述
我正在使用带有设计的rails 5.2。我在我的数据库中为设计用户添加了一个唯一的用户名字段。尝试使用重复的用户名注册时,我的数据库出现 ActiveRecord::RecordNotUnique 错误。我想要一条错误消息,就像设计默认为电子邮件一样。谢谢!
编辑完整的错误信息:
PG::UniqueViolation:错误:重复的键值违反了唯一约束“index_users_on_username”详细信息:键(用户名)=(超级测试)已经存在。: INSERT INTO "users" ("email", "encrypted_password", "created_at", "updated_at", "username") VALUES ($1, $2, $3, $4, $5) 返回"id"
解决方案
您需要向模型添加验证:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:confirmable, :recoverable, :validatable # ...
validates_uniqueness_of :username
end
验证可以防止低级ActiveRecord::RecordNotUnique
异常,因为如果验证失败,Rails 将不会尝试写入数据库。
推荐阅读
- android - 如何从 android 应用程序生成类似事件的 Ctrl+v(Paste)?
- version-control - EM 破折号(“-”)在 WinCvs 中更新时被字符替换
- dialogflow-es - 如何使用 Dialogflow 电话网关并在 nodejs 等后端平台中处理它
- javascript - nodejs 中的 Promise 和 async/await
- c++ - volatile sig_atomic_t 的内存安全
- qt - 如何使用Win7设置QTcpServer单独监听端口
- ruby-on-rails - gem 'rails-settings-cached' 是否允许多个设置模型?
- python - Kivy 应用程序未从 systemd 服务运行
- javascript - 函数在之前执行,结果不适用
- cpanel - 页面不工作错误 - Laravel cPanel