Method: ActiveRecord::Integration#cache_version

Defined in:
lib/active_record/integration.rb

#cache_versionObject

Returns a cache version that can be used together with the cache key to form a recyclable caching scheme. By default, the #updated_at column is used for the cache_version, but this method can be overwritten to return something else.

Note, this method will return nil if ActiveRecord::Base.cache_versioning is set to false (which it is by default until Rails 6.0).



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/active_record/integration.rb', line 97

def cache_version
  return unless cache_versioning

  if has_attribute?("updated_at")
    timestamp = updated_at_before_type_cast
    if can_use_fast_cache_version?(timestamp)
      raw_timestamp_to_cache_version(timestamp)
    elsif timestamp = updated_at
      timestamp.utc.to_s(cache_timestamp_format)
    end
  else
    if self.class.has_attribute?("updated_at")
      raise ActiveModel::MissingAttributeError, "missing attribute: updated_at"
    end
  end
end