Sha256: 1e9b009d86e9a17d51740d9de0c945a0fe09e2e5b7213d0757b3610b999e4653
Contents?: true
Size: 1.42 KB
Versions: 4
Compression:
Stored size: 1.42 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::Adapters::ActiveRecord, klass, protector_subject ) scope_without_protector.merge(@meta.relation) end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems