35 lines
1.1 KiB
Ruby
35 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module GemExtensions
|
|
module ActiveRecord
|
|
module DelegateCache
|
|
def relation_delegate_class(klass)
|
|
@relation_delegate_cache2[klass] || super # rubocop:disable Gitlab/ModuleWithInstanceVariables
|
|
end
|
|
|
|
def initialize_relation_delegate_cache_disable_joins
|
|
@relation_delegate_cache2 = {} # rubocop:disable Gitlab/ModuleWithInstanceVariables
|
|
|
|
[
|
|
::GemExtensions::ActiveRecord::DisableJoins::Relation
|
|
].each do |klass|
|
|
delegate = Class.new(klass) do
|
|
include ::ActiveRecord::Delegation::ClassSpecificRelation
|
|
end
|
|
include_relation_methods(delegate)
|
|
mangled_name = klass.name.gsub("::", "_")
|
|
const_set mangled_name, delegate
|
|
private_constant mangled_name
|
|
|
|
@relation_delegate_cache2[klass] = delegate # rubocop:disable Gitlab/ModuleWithInstanceVariables
|
|
end
|
|
end
|
|
|
|
def inherited(child_class)
|
|
child_class.initialize_relation_delegate_cache_disable_joins
|
|
super
|
|
end
|
|
end
|
|
end
|
|
end
|