DeleteSoftly

Add soft delete functionality to ActiveRecord models. Important information: This is Rails3 only, no backwards compatibility. Important features are

  • It works through relations
  • papertrail support

Tested with Postgresql

New in version 0.3

  • without_deleted, same as active, but not meant to be overwritten
  • deleted is back, misteriously disappeared in version 0.2

Example

class Post

Replace normal behavior of object completely

delete_softly end

class Comment

Rely on calling active for this object when needed

delete_softly false end

Now the following stuff works:

The Post model ==

p1 = Post.create p2 = Post.create Post.count #=> 2 p2.destroy Post.count #=> 1 Post.at_time(1.year.ago).count #=> 0

c1 = Comment.create c2 = Comment.create Comment.count #=> 2 c1.destroy Comment.count #=> 2 (Since we added false) Comment.active.count #=> 1

See the rdoc for better examples and documentation

Copyright (c) 2010 [Benjamin ter Kuile], released under the MIT license