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
27 28 29 30 31 32 33 |
# File 'lib/mongoid/cacheable.rb', line 27 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.
46 47 48 49 50 |
# File 'lib/mongoid/cacheable.rb', line 46 def cache_version return unless has_attribute?('updated_at') && updated_at.present? updated_at.utc.to_formatted_s() end |