ruby-on-rails - 如果特定电子邮件(空白电子邮件)已经存在,如何允许设计保存用户?
问题描述
我有一个设计用户模型。当要创建用户时,不需要电子邮件(电子邮件是可选的)。我可以第一次创建没有电子邮件的用户(空白电子邮件)。当我第二次添加用户时,错误出现
duplicate key value violates unique constraint "index_accounts_on_email"
DETAIL: Key (email)=() already exists.
我认为如果已经存在空白电子邮件,就会发生这种情况。
只有当电子邮件不是空白并且我可以添加尽可能多的空白电子邮件用户时,有没有办法验证唯一性?
用户.rb
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable, :confirmable, :omniauthable
protected
def password_required?
false
end
def email_required?
false
end
end
解决方案
如果您查看创建用户的迁移文件,您会发现以下行:
add_index :users, :email, unique: true
删除它的一种方法是删除完整的索引并再次添加它而没有唯一性:
remove_index :users, :email
add_index :users, :email
现在它不会检查电子邮件的唯一性,您可以随时随地自行处理。
推荐阅读
- excel - Excel VBA 从现有代码中保存多个工作表
- terraform-provider-azure - azurerm_app_service 创建并获取 IP 地址
- android - TypedArray 的背景颜色
- python - 如何在另一个 Django 模板变量中添加一个 Django 模板变量?
- c++ - Windows 7 和 10 是否需要不同的用户权限才能启动服务?
- ios - 在 UIProgressView 上设置最大值(swift 4)
- wordpress - 将博客文章固定/粘贴到 Wordpress 页面顶部(不是主页)
- python - 使用两个字典中的值搜索键并在 Python 中输出匹配的键
- c# - 如果 DataGridView 已经为空,如何防止用户删除行?
- java - 无法从 NDK 项目中的 android_main 调用任何 JNI 功能