Sha256: 60b45e940672fa71e3174504f8b4becb4828bb649fe66412e0c08230af4e8f43

Contents?: true

Size: 1.1 KB

Versions: 6

Compression:

Stored size: 1.1 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?
          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

6 entries across 6 versions & 1 rubygems

Version Path
second_level_cache-2.1.7 lib/second_level_cache/active_record/has_one_association.rb
second_level_cache-2.1.6 lib/second_level_cache/active_record/has_one_association.rb
second_level_cache-2.1.5 lib/second_level_cache/active_record/has_one_association.rb
second_level_cache-2.1.2 lib/second_level_cache/active_record/has_one_association.rb
second_level_cache-2.1.1 lib/second_level_cache/active_record/has_one_association.rb
second_level_cache-2.1.0 lib/second_level_cache/active_record/has_one_association.rb