我有一个用户模型,我检查以确保提供的电子邮件地址是唯一的:
validates_uniqueness_of :email
这个模型充当了偏执狂。在销毁时,我需要删除电子邮件地址,以便如果用户想要重新注册,他们可以。为此,我有以下内容:
before_destroy :remove_email
def remove_email
self.email = "[deleted]"
save(false)
end
在适当的时候调用该方法,但save方法会抛出以下错误:
ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '[deleted]' for key 2: UPDATE `users` SET `email` = '[deleted]', `updated_at` = '2009-07-16 12:29:05' WHERE `id` = 53
所以看起来验证仍在某种程度上运行。有没有办法解决这个问题?
答案 0 :(得分:2)
我发现了问题:我在电子邮件中有一个独特的索引。如果出现此错误,请检查schema.db以获取唯一索引。线索是Mysql抛出异常,而不是rails。
俗话说:“SELECT没有被打破”。