このエントリの内容だけだとDevise側の実装でうまくいかなかったので。
http://dangerous-animal141.hatenablog.com/entry/2014/09/08/133533
gem 'paranoia_uniqueness_validator'を追加した上で
下記のバリデートを追加
validates :email,
:presence => true,
:uniqueness_without_deleted => true
これだけだとNotUniqueなバリデートエラーが返る。
deviseのライブラリを覗いてみるとこうなってる。
# lib/devise/models/validatable.rb
validates_uniqueness_of :email, :allow_blank => true, :if => :email_changed?
ので、ユニークチェックが余分にかかってしまう。
これをキャンセルして:uniqueness_without_deleted => trueだけが効くようにするために、ResouceModelに下記足してやる。
def email_changed?
false
end
※ Rails3での挙動なので、4こんなことやんなくてもいいのかもしれない