diff options
Diffstat (limited to 'lib/gem_extensions/active_record/association.rb')
-rw-r--r-- | lib/gem_extensions/active_record/association.rb | 37 |
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 |