Module: Invoicing::CachedRecord
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/invoicing/cached_record.rb
Overview
Aggressive ActiveRecord cache
This module implements a cache of ActiveRecord objects. It is suitable for database
tables with a small number of rows (no more than a few dozen is recommended) which
change very infrequently. The contents of the table is loaded into memory when the
class is first created; to clear the cache you must call clear_cache or
restart the Ruby interpreter. It is recommended that if you need to change the
data in this table, you do so in a database migration, and apply that migration as
part of a release deployment.
The cache works as a simple identity map: it has a hash where the key is the primary
key of each model object and the value is the model object itself. ActiveRecord
methods are overridden so that if find is called with one or more IDs, the object(s)
are returned from cache; if find is called with more complex conditions, the usual
database mechanisms are used and the cache is ignored. Note that this does not
guarantee that the same ID value will always map to the same model object instance;
it just reduces the number of database queries.
To activate CachedRecord, call acts_as_cached_record in the scope of an
ActiveRecord::Base class.
Defined Under Namespace
Modules: ActMethods, ClassMethods Classes: ClassInfo