Sha256: 0cc3960c94b9585a8ab83cc833c6981cb5b779d8c9661a94cd972105e0ddc720
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
# -*- encoding : utf-8 -*- module SecondLevelCache module ActiveRecord module Associations module HasOneAssociation extend ActiveSupport::Concern included do class_eval do alias_method_chain :find_target, :second_level_cache end end def find_target_with_second_level_cache return find_target_without_second_level_cache unless klass.second_level_cache_enabled? return find_target_without_second_level_cache if reflection.options[:through] # TODO: implement cache with has_one through if reflection.options[:as] cache_record = klass.fetch_by_uniq_keys({reflection.foreign_key => owner[reflection.active_record_primary_key], reflection.type => owner.class.base_class.name}) else cache_record = klass.fetch_by_uniq_key(owner[reflection.active_record_primary_key], reflection.foreign_key) end return cache_record.tap{|record| set_inverse_instance(record)} if cache_record record = find_target_without_second_level_cache record.tap do |r| set_inverse_instance(r) r.write_second_level_cache end if record end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
second_level_cache-2.1.8 | lib/second_level_cache/active_record/has_one_association.rb |