首页 > 解决方案 > 如果特定电子邮件(空白电子邮件)已经存在,如何允许设计保存用户?

问题描述

我有一个设计用户模型。当要创建用户时,不需要电子邮件(电子邮件是可选的)。我可以第一次创建没有电子邮件的用户(空白电子邮件)。当我第二次添加用户时,错误出现

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

标签: ruby-on-railsdevise

解决方案


如果您查看创建用户的迁移文件,您会发现以下行:

add_index :users, :email, unique: true

删除它的一种方法是删除完整的索引并再次添加它而没有唯一性:

remove_index :users, :email
add_index :users, :email

现在它不会检查电子邮件的唯一性,您可以随时随地自行处理。


推荐阅读