Method: IdentityCache::Cached::Reference::HasOne#build

Defined in:
lib/identity_cache/cached/reference/has_one.rb

#buildObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/identity_cache/cached/reference/has_one.rb', line 15

def build
  reflection.active_record.class_eval("    attr_reader :\#{id_cached_reader_name}\n\n    def \#{cached_id_name}\n      return \#{id_variable_name} if defined?(\#{id_variable_name})\n      \#{id_variable_name} = association(:\#{name}).scope.ids.first\n    end\n\n    def \#{cached_accessor_name}\n      assoc = association(:\#{name})\n      if assoc.klass.should_use_cache? && !assoc.loaded?\n        \#{records_variable_name} ||= \#{reflection.class_name}.fetch(\#{cached_id_name}) if \#{cached_id_name}\n      else\n        \#{name}\n      end\n    end\n  RUBY\n\n  ParentModelExpiration.add_parent_expiry_hook(self)\nend\n", __FILE__, __LINE__ + 1)