summaryrefslogtreecommitdiff
path: root/lib/gem_extensions/active_record/association.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gem_extensions/active_record/association.rb')
-rw-r--r--lib/gem_extensions/active_record/association.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/gem_extensions/active_record/association.rb b/lib/gem_extensions/active_record/association.rb
new file mode 100644
index 00000000000..91a9f45ce7e
--- /dev/null
+++ b/lib/gem_extensions/active_record/association.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+module GemExtensions
+ module ActiveRecord
+ module Association
+ extend ActiveSupport::Concern
+
+ attr_reader :disable_joins
+
+ def initialize(owner, reflection)
+ super
+
+ @disable_joins = @reflection.options[:disable_joins] || false
+ end
+
+ def scope
+ if disable_joins
+ DisableJoins::Associations::AssociationScope.create.scope(self)
+ else
+ super
+ end
+ end
+
+ def association_scope
+ if klass
+ @association_scope ||= begin # rubocop:disable Gitlab/ModuleWithInstanceVariables
+ if disable_joins
+ DisableJoins::Associations::AssociationScope.scope(self)
+ else
+ super
+ end
+ end
+ end
+ end
+ end
+ end
+end