# Soft Deletes

**URL:** <https://www.ruby-forum.com/t/soft-deletes/95359>\
**Category:** Rails\
**Created:** [January 17, 2006, 1:27am UTC](https://www.ruby-forum.com/t/soft-deletes/95359 "2006-01-17T01:27:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![rubyker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b4bc9f/32.png) [@rubyker](https://www.ruby-forum.com/u/rubyker)\
**Post date:** [January 17, 2006, 1:27am UTC](https://www.ruby-forum.com/t/soft-deletes/95359/1 "2006-01-17T01:27:48Z")

</div>

How would I go about setting up my rails applications to soft delete  
items from the database rather than actually deleting it. I would  
imagine that I need to over ride the methods from ActiveRecord.

Where would I do this would it be in the model? enviroment.rb? I  
would imagine that if i wanted it throughout my entire application it  
would need to be in the enviroment.rb.

Also to en-corporate the soft deletes I might need to write some  
custom find methods etc.

Has anyone got any ideas. Or has a plugin (etc) been written already?

Many thanks

---

<div class="post-metadata">

**Author:** ![rubyker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b4bc9f/32.png) [@rubyker](https://www.ruby-forum.com/u/rubyker)\
**Post date:** [January 17, 2006, 1:58am UTC](https://www.ruby-forum.com/t/soft-deletes/95359/2 "2006-01-17T01:58:05Z")

</div>

Cheers, thats exactly what I was looking for.

---

<div class="post-metadata">

**Author:** ![rubyker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b4bc9f/32.png) [@rubyker](https://www.ruby-forum.com/u/rubyker)\
**Post date:** [January 21, 2006, 3:40pm UTC](https://www.ruby-forum.com/t/soft-deletes/95359/3 "2006-01-21T15:40:31Z")

</div>

A somehwat brutish approach might be to not actually use the rails  
destroy method, but instead do something like this. It all depends on  
how complex your app/domain is I suppose:

class Thingy \< ActiveRecord::Base  
def Thingy.active  
Thingy.get\_thingys  
end

def Thingy.archived  
Thingy. get\_thingys(1)  
end

def Thingy.all  
Thingy.find(:all)  
end

def Thingy. get\_thingys(archived = 0)  
Thingy.find(:all, :conditions =\> “archived = #{archived.to\_s}”)  
end

def archive  
self.archived = 1  
end  
end

On 1/16/06, Oliver L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Has anyone got any ideas. Or has a plugin (etc) been written already?
> 
> Many thanks
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

–  
Lance B.  
[http://lance.langwell-ball.com](http://lance.langwell-ball.com)

---

<div class="post-metadata">

**Author:** ![rubyker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b4bc9f/32.png) [@rubyker](https://www.ruby-forum.com/u/rubyker)\
**Post date:** [January 21, 2006, 3:40pm UTC](https://www.ruby-forum.com/t/soft-deletes/95359/4 "2006-01-21T15:40:32Z")

</div>

Check out the “acts\_as\_paranoid” plugin. It handles soft deletes for  
any ActiveRecord marked “acts\_as\_paranoid”.

[http://wiki.rubyonrails.com/rails/pages/Plugins](http://wiki.rubyonrails.com/rails/pages/Plugins)

---

<div class="post-metadata">

**Author:** ![rubyker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b4bc9f/32.png) [@rubyker](https://www.ruby-forum.com/u/rubyker)\
**Post date:** [January 21, 2006, 3:40pm UTC](https://www.ruby-forum.com/t/soft-deletes/95359/5 "2006-01-21T15:40:35Z")

</div>

acts\_as\_paranoid

[http://ar-paranoid.rubyforge.org/](http://ar-paranoid.rubyforge.org/)

---

<div class="post-metadata">

**Author:** ![rubyker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/b4bc9f/32.png) [@rubyker](https://www.ruby-forum.com/u/rubyker)\
**Post date:** [January 21, 2006, 3:40pm UTC](https://www.ruby-forum.com/t/soft-deletes/95359/6 "2006-01-21T15:40:37Z")

</div>

On 1/16/06, Theodore M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Check out the “acts\_as\_paranoid” plugin. It handles soft deletes for  
> any ActiveRecord marked “acts\_as\_paranoid”.
> 
> [Peak Obsession](http://wiki.rubyonrails.com/rails/pages/Plugins)

Ahh - nice.

–  
Lance B.  
[http://lance.langwell-ball.com](http://lance.langwell-ball.com)
