2009-07-16 6 views
1

を検証する(false)を保存します。破壊すると、ユーザーが再登録したい場合、電子メールアドレスを削除する必要があります。このために、私は次のようしている:ActiveRecordのは、まだ私は私が与えたメールアドレスが一意であることを確認してくださいどのユーザモデルを持っているモデル

before_destroy :remove_email 

def remove_email 
    self.email = "[deleted]" 
    save(false) 
end 

方法が適切な時点で呼び出されますが、保存する方法は、次のエラーがスローされます。

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 

は、だから、検証がまだ実行されているように見えますいくつかのレベルで。これを回避する方法はありますか?

答えて

2

問題が見つかりました:私は電子メールに一意のインデックスを持っていました。このエラーが発生した場合は、schema.dbで一意のインデックスを確認してください。手がかりは、Mysqlがレールではなく例外を投げているということです。

「セレクトは壊れていません」という意味のとおりです。

関連する問題