Archive 2s
This gem provides the ability to archive a meaningful bit of information. This is good for use with friendly_id or stats. It will save to a single table that is created via a migration copied from the rake task
Usage
archive_2s accepts two optional parameters, :method_name and :include_by_default
class Item < ActiveRecord::Base
archive_2s :method_name => :name, :include_by_default => true
def name
[self.first_name, self.middle_initial, self.last_name].join(' ')
end
end
:method_name is the methods return value you wish to save and :include_by_default will include archived results when you fetch by id only (as all that is saved is the id and a value of a method)
All objects returned are readonly.
Migration
See the last todo, this needs to me a generator/rake task but I am tired and want to goto sleep
create_table :archived_to_s do |t|
t.datetime :archived_at
t.string :model_type
t.integer :model_id
t.string :archived_value
end
add_index :archived_to_s, [:model_type,:model_id,:archived_at], :name => 'model_and_archive_date_idx', :unique => true
Todo
-
make some proxy magic so if one calls a relationship if can search the archive too
-
use wants rather then returning based on length
-
drop the id column and use the index for the model
-
make the doco usefull
-
make a generator for rails 2 and 3
Copyright
Copyright © 2011 SmashTank Apps, LLC. See LICENSE.txt for further details.