Module: Mongoid::Cacheable
Overview
Encapsulates behavior around caching.
Instance Method Summary collapse
-
#cache_key ⇒ String
Print out the cache key.
-
#cache_version ⇒ String | nil
Return the cache version for this model.
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
29 30 31 32 33 34 |
# 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.
47 48 49 50 51 |
# 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 |