Module: Pundit::Cache

Defined in:
lib/pundit/cache.rb,
lib/pundit/cache/version.rb

Constant Summary collapse

VERSION =
"0.1.0"

Instance Method Summary collapse

Instance Method Details

#cache(method_name) ⇒ Object

the policy result for a given user and record should not change during a request



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/pundit/cache.rb', line 7

def cache(method_name)
  wrapped_name = "_uncached_#{method_name}"
  alias_method wrapped_name, method_name
  class_eval "    def \#{method_name}\n      cache_key = \"\\\#{user&.to_global_id}|\\\#{record&.to_global_id}|\#{method_name}\"\n      if RequestStore.store[cache_key].nil?\n        RequestStore.store[cache_key] = \#{wrapped_name}\n      else\n        RequestStore.store[cache_key]\n      end\n    end\n  RUBY\nend\n", __FILE__, __LINE__ + 1