1

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

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

4

2 回答 2

2

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

UNIQUE (email, deletion_date)

这将有效地:

  • 对于标准(未删除)用户,请确保他们拥有唯一的电子邮件地址,因为他们的删除日期大概都是NULL.
  • 对于已删除的用户,不要对电子邮件地址做任何保证,因为它们都有唯一的删除日期。
  • 对于新用户,允许他们使用已删除用户拥有的电子邮件地址,因为新用户将有一个NULL删除日期,而已删除用户在那里有一个值。
于 2011-07-19T19:50:39.543 回答
0

啊,只需将旧电子邮件更改为类似

我@yourmail.com_deleted

这样,如果您需要查看旧电子邮件,它就是删除下划线之前的所有内容。

换句话说,这里有新用户创建新帐户。

可能在后台有一个 mutator 添加在旧帐户上删除的下划线。

下划线删除只是一个例子。

于 2020-12-17T06:28:49.420 回答