如果特定电子邮件(空白电子邮件)已经存在,如何允许设计保存用户?
How to allow devise to save user if a specific email (blank email) already exist?
我有一个设计用户model.When要创建一个用户,不需要电子邮件(电子邮件是可选的)。我可以创建第一个没有电子邮件(空白电子邮件)的用户time.When 我第二次添加用户时出现错误
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
如果您查看创建用户的迁移文件,您会发现以下行:
add_index :users, :email, unique: true
删除它的一种方法是删除完整的索引并在没有唯一性的情况下再次添加它:
remove_index :users, :email
add_index :users, :email
现在它不会检查电子邮件的唯一性,您可以随时随地自行处理。
我有一个设计用户model.When要创建一个用户,不需要电子邮件(电子邮件是可选的)。我可以创建第一个没有电子邮件(空白电子邮件)的用户time.When 我第二次添加用户时出现错误
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
如果您查看创建用户的迁移文件,您会发现以下行:
add_index :users, :email, unique: true
删除它的一种方法是删除完整的索引并在没有唯一性的情况下再次添加它:
remove_index :users, :email
add_index :users, :email
现在它不会检查电子邮件的唯一性,您可以随时随地自行处理。