HistoricalSociety -- Preserve the history of your data, starting with soft delete.
DESCRIPTION
The historical society gem currently provides basic soft delete functionality on an ActiveRecord instance through the use of a "deleted_at" timestamp column and a default_scope that excludes the soft deleted records.
Note: This currently provides a default_scope that excludes soft deleted records. It also overrides the normal #destroy and #delete instance methods so they just set the deleted_at timestamp without actually deleting the records from the db.
INSTALLATION
$ gem install historical_society
USAGE
In your model:
class User < ActiveRecord::Base
include HistoricalSociety
end
In your queries:
User.all # does not include deleted records
User.unscoped.all # includes deleted records
User.find(1) # raises ActiveRecord::RecordNotFound if user has been soft deleted
User.unscoped.find(1) # finds user record regardless of soft deletion
In relationships:
@account.users # finds only users within the account scope that have not been soft deleted
@account.users.unscoped # CAREFUL! THIS REMOVES THE ACCOUNT SCOPE TOO!
# THIS IS PROBABLY WHAT YOU WANT
# Removes the default scope on user, but then adds the account scope through an explicit where method.
User.unscoped.all.where(:account_id => @account.id)