No commit activity in last 3 years
No release in over 3 years
In the event that you do not want to clutter your production databases with what could be temporary data you can use this plugin to temporarily store and later retreive data with your database.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.0.0

Runtime

~> 3.1.0
 Project Readme

ActsAsTemporary

On occasion I've had the need to store data for a short period of time within an application's database but did not want it to artificially inflate the ID numbers. This gem uses a TemporaryObject model that stores the "definition" (read: attributes) of a model. It can then be recalled at a later date. Upon saving a recalled object the temporary version is deleted.

Requirements

This project builds upon ActiveRecord and for that reason you must use it within a Rails application. The distributed gem is intended for a Rails 3.1.x application. If you are running a Rails 3.0.x application you will need to switch to the rails-3.0.x branch

Installation

This project is distributed as a gem and it should be as simple as adding the following line to your Gemfile.

gem 'acts_as_temporary', '~> 0.0.1'

You'll need to copy and run the migration from the engine.

$ cd _/your/rails/app_
$ rake acts_as_temporary_engine:install:migrations
$ rake db:migrate

Configuration

In your {environment}.rb file you can set the shelf life of a temporary object with the following configuration definition:

config.acts_as_temporary_shelf_life = 1.day # Set the duration to something that makes sense

By default the shelf life of a temporary object is 365.days.

Usage

Class Methods

can_be_temporary

Within the model you would like to be able to temporarily store you just need to add the following line.

can_be_temporary

For example, if you wish to make the Registration model one that can be temporary the model would look like this to start.

class Registration < ActiveRecord::Base
  can_be_temporary
end

clear_stale_objects

Rolls through the temporary objects table and clears any old temporary objects. By default anything older than 24 hours is considered stale.

Instance Methods

#store

The #store instance method takes the instance and stores it as a temporary object. The temporary object's ID is then stored within the objects @temporary_id instance variable.

#recall

The #recall instance method takes the ID of a temporary object and attempts to instantiate that data.

#is_temporary?

Returns true if the current object has a @temporary_id.

Deleting Temporary Objects

There are two methods for deleting temporary objects. The first, and most common, is to simply call save and the second is to call drop_temporary on an object that has been recalled.

#save

If the object saves without error the temporary object will be destroyed.

#drop_temporary

Deletes the associated temporary object from the database without saving the calling object

Example

registration = Registration.new(params[:registration])
registration.is_temporary? # => false

registration.store # => this object's data is stored in the database and the ID of the temporary object is interally assigned
registration.id # => nil
registration.temporary_id # => 14123
registration.is_temporary? # => true

registration = Registration.recall(14123)
registration.id # => nil
registration.is_temporary? # => true

registration.save # => true
registration.is_temporary? # => false

This project uses MIT-LICENSE.