Sha256: 3756252667d98d4558863de6ea68b4679394ea3b203bbaedf17e7a9c9624b5c0
Contents?: true
Size: 1.32 KB
Versions: 7
Compression:
Stored size: 1.32 KB
Contents
module Protector module Adapters module ActiveRecord # Patches `ActiveRecord::Associations::Preloader` module Preloader extend ActiveSupport::Concern # Patches `ActiveRecord::Associations::Preloader::Association` module Association extend ActiveSupport::Concern included do # AR 4 has renamed `scoped` to `scope` if method_defined?(:scope) alias_method_chain :scope, :protector else alias_method 'scope_without_protector', 'scoped' alias_method 'scoped', 'scope_with_protector' end end # Gets current subject of preloading association def protector_subject # Owners are always loaded from the single source # having same protector_subject owners.first.protector_subject end def protector_subject? owners.first.protector_subject? end # Restricts preloading association scope with subject of the owner def scope_with_protector(*args) return scope_without_protector unless protector_subject? @meta ||= klass.protector_meta.evaluate(protector_subject) scope_without_protector.merge(@meta.relation) end end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems