我有一个设计用户模型。要创建用户时,不需要电子邮件(电子邮件是可选的)。我可以第一次创建不带电子邮件的用户(空白电子邮件)。当我第二个添加用户时错误出现的时间
duplicate key value violates unique constraint "index_accounts_on_email"
DETAIL: Key (email)=() already exists.
我认为如果已经存在空白电子邮件,就会发生这种情况。
只有当电子邮件不是空白并且我可以用空白电子邮件添加尽可能多的用户时,才可以验证唯一性吗?
user.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
答案 0 :(得分:1)
如果您查看创建用户的迁移文件,则会发现以下行:
add_index :users, :email, unique: true
删除此内容的一种方法是删除完整的索引,然后重新添加它而不会造成唯一性:
remove_index :users, :email
add_index :users, :email
现在,它不会检查电子邮件的唯一性,您可以随时随地自行处理。