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

时间:2011-07-19 19:44:57

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

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

如果你不理解我的问题,请回复。

2 个答案:

答案 0 :(得分:2)

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

UNIQUE (email, deletion_date)

这将有效:

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

答案 1 :(得分:0)

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

Me@yourmail.com_deleted

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

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

可能在后台有一个mutator,并在旧帐户上删除了下划线。

下划线仅删除了一个示例。

相关问题