Paranoia is a re-implementation of [acts\_as\_paranoid](http://github.com/technoweenie/acts_as_paranoid) for Rails 3, using much, much, much less code.
Paranoia is a re-implementation of [acts\_as\_paranoid](http://github.com/technoweenie/acts_as_paranoid) for Rails 3, using much, much, much less code.
You would use either plugin / gem if you wished that when you called `destroy` on an Active Record object that it didn't actually destroy it, but just "hid" the record. Paranoia does this by setting a `deleted_at` field to the current time when you `destroy` a record, and hides it by scoping all queries on your model to only include records which do not have a `deleted_at` field.
You would use either plugin / gem if you wished that when you called `destroy` on an Active Record object that it didn't actually destroy it, but just "hid" the record. Paranoia does this by setting a `deleted_at` field to the current time when you `destroy` a record, and hides it by scoping all queries on your model to only include records which do not have a `deleted_at` field.
h2. Installation & Usage
## Installation & Usage
h3. Initial installation
### Initial installation
#### Rails 3
In your _Gemfile_:
In your _Gemfile_:
gem 'paranoia'
gem 'paranoia'
Then run `bundle install`
Then run:
bundle install
Or if you're still on Rails 2:
#### Rails 2:
In your _config/environment.rb_:
config.gem 'paranoia'
config.gem 'paranoia'
Then run `rake gems:install`
Then run:
rake gems:install
h3. Usage
### Usage
In your model:
#### In your model:
class Client < ActiveRecord::Base
class Client < ActiveRecord::Base
acts_as_paranoid
acts_as_paranoid
...
@@ -32,6 +40,20 @@ In your model:
...
@@ -32,6 +40,20 @@ In your model:
Hey presto, it's there!
Hey presto, it's there!
h2. License
If you want a method to be called on destroy, simply provide a _before\_destroy_ callback: