Module: TypedViewModel::HashedKey

Defined in:
lib/typed_view_model/hashed_key.rb

Class Method Summary collapse

Class Method Details

.call(item) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/typed_view_model/hashed_key.rb', line 5

def self.call(item)
  if item.respond_to? :cache_key_with_version
    # ActiveRecord
    item.cache_key_with_version
  elsif item.respond_to? :cache_key
    # Presenters, ViewComponent etc
    item.cache_key
  elsif item.is_a?(String)
    ::Digest::SHA1.hexdigest(item)
  else
    # Anything else
    ::Digest::SHA1.hexdigest(::Marshal.dump(item))
  end
end