Mongoid::Paranoiaで論理削除を実装する。
Mongoid::Paranoia使って論理削除ができる
class Person
include Mongoid::Document
include Mongoid::Paranoia
end
って書くと、persion.destroyしたときに、データは完全には削除されず、論理削除されるようになる。 物理削除は行われずdeleted_atに日付が入るようになる。
Persion.allなどとすると削除されたものは対象とならない。
削除したものをとってくる場合はdeletedメソッドでできる。
Persion.deleted
ただし、この場合は削除されたものしかとってこない。削除されていないものも削除されたものも両方ともとってきたい場合はunscopedを使用する
Persion.unscoped
unscopedが使えるようになったのは2.4.0以降。この経緯は以下のURLを参照にして。
https://github.com/mongoid/mongoid/issues/1359
http://d.hatena.ne.jp/hibariya/20110531/1306770478
ちなみに、この機能(Mongoid::Paranoia)はmongoid 4.0.0以降でサポートされなくなると思われる。