Module: Kcache::MultiFetch

Defined in:
lib/kcache/multi_fetch.rb

Class Method Summary collapse

Class Method Details

.fetch_multi(k, objects) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/kcache/multi_fetch.rb', line 3

def self.fetch_multi k, objects
  results = {}
  keys = objects.collect { |o| "#{o.class.base_class.name.downcase}/#{o.id.to_s}/#{k}" }
  hits = Rails.cache.read_multi(*keys)
  keys.each_with_index do |key, i|
    results[objects[i].id.to_i] = if hits.include?(key)
                                    hits[key]
                                  else
                                    objects[i].try(k)
                                  end
  end
  results
end