mysql - 使用电子邮件创建新用户作为软删除用户

标签 mysql ruby-on-rails unique soft-delete

我正在使用 ActsAsParanoid 软删除用户。删除(软)用户后,我的客户想要创建具有相同电子邮件 ID 的用户。但是由于电子邮件列是唯一的,所以它会生成唯一字段错误。所以我的问题是我们可以设置仅当 deleted_at 列为空时,email 列的唯一性。

如果你不明白我的问题,请回复。

最佳答案

我想您可以将 users 表的唯一性约束更改为:

UNIQUE (email, deletion_date)

这将有效地:

  • 对于标准(未删除)用户,保证他们有唯一的电子邮件地址,因为他们的删除日期可能都是 NULL
  • 对于已删除的用户,不对电子邮件地址做任何保证,因为他们都有唯一的删除日期。
  • 对于新用户,允许他们使用已删除用户的电子邮件地址,因为新用户将有一个 NULL 删除日期,而已删除用户在那里有一个值。

关于mysql - 使用电子邮件创建新用户作为软删除用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753161/

相关文章:

javascript - Rails6 禁用所有非 ActiveAdmin 页面的 ActiveAdmin 布局

ruby-on-rails - 在我的应用程序上使用 Devise 注销时出现问题

python - 在不使用列表、集合等的情况下在 Python 中生成唯一数字

php - Jquery 不允许我保存我的全文。只有 1 个字

php - 如何在 zend 框架中显式关闭 mysql 连接?

c++ - 使用madeline2绘制谱系

Java - 数学 : System. nanoTime() 和 currentTimeMilli - 如果我们取出 x 个字符 - 准确性是多少?

java - 使用 java 类创建数据库

sql - Rails first_or_create 添加 (1=2) 到查询

MySQL:按特定顺序按列分组(不仅仅是 ASC 或 DESC)