【问题标题】:ActiveRecord save(false) still validating modelActiveRecord save(false) 仍在验证模型
【发布时间】:2009-07-16 12:39:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails validation activerecord


    【解决方案1】:

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

    俗话说:“SELECT 不坏”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多