ActiveRecord保存(false)仍然验证模型

时间:2009-07-16 12:39:12

标签: ruby-on-rails validation activerecord

我有一个用户模型,我检查以确保提供的电子邮件地址是唯一的:

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

所以看起来验证仍在某种程度上运行。有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:2)

我发现了问题:我在电子邮件中有一个独特的索引。如果出现此错误,请检查schema.db以获取唯一索引。线索是Mysql抛出异常,而不是rails。

俗话说:“SELECT没有被打破”。