Module: Mongoid::Cacheable
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
ActiveSupport::Concern
|
|
Defined in: | lib/mongoid/cacheable.rb |
Overview
Encapsulates behavior around caching.
Instance Method Summary
-
#cache_key ⇒ String
Print out the cache key.
-
#cache_version ⇒ String | nil
Return the cache version for this model.
DSL Calls
included
[ GitHub ]10 11 12 13
# File 'lib/mongoid/cacheable.rb', line 10
included do cattr_accessor :, instance_writer: false self. = :nsec end
Instance Method Details
#cache_key ⇒ String
Print out the cache key. This will append different values on the plural model name.
If new_record? - will append /new Non-nil cache_version? - append /id Non-nil updated_at - append /id-updated_at.to_formatted_s(cache_timestamp_format) Otherwise - append /id
This is usually called inside a cache() block
# File 'lib/mongoid/cacheable.rb', line 29
def cache_key return "#{model_key}/new" if new_record? return "#{model_key}/#{_id}" if cache_version return "#{model_key}/#{_id}-#{updated_at.utc.to_formatted_s( )}" if try(:updated_at) "#{model_key}/#{_id}" end
#cache_version ⇒ String | nil
Return the cache version for this model. By default, it returns the updated_at field (if present) formatted as a string, or nil if the model has no updated_at field. Models with different needs may override this method to suit their desired behavior.
TODO: we can test this by using a MemoryStore, putting something in it, then updating the timestamp on the record and trying to read the value from the memory store. It shouldn’t find it, because the version has changed.
# File 'lib/mongoid/cacheable.rb', line 47
def cache_version if has_attribute?('updated_at') && updated_at.present? updated_at.utc.to_formatted_s( ) end end