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 © 2010 [Benjamin ter Kuile], released under the MIT license