如果已经存在特定的电子邮件(空白电子邮件),如何允许设备保存用户?

时间:2019-07-05 08:45:06

标签: ruby-on-rails devise

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

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

1 个答案:

答案 0 :(得分:1)

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

add_index :users, :email, unique: true

删除此内容的一种方法是删除完整的索引,然后重新添加它而不会造成唯一性:

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

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