class ThinkingSphinx::ActiveRecord::Depolymorph::OverriddenReflection

This overriding approach is only available in Rails 5.2+. This behaviour was preceded by AssociationReflection for Rails 4.1-5.1.

Public Class Methods

overridden_classes() click to toggle source
# File lib/thinking_sphinx/active_record/depolymorph/overridden_reflection.rb, line 28
def self.overridden_classes
  @overridden_classes ||= {}
end

Public Instance Methods

call() click to toggle source
# File lib/thinking_sphinx/active_record/depolymorph/overridden_reflection.rb, line 32
def call
  klass.new name, nil, options, reflection.active_record
end

Private Instance Methods

extension(reflection) click to toggle source
# File lib/thinking_sphinx/active_record/depolymorph/overridden_reflection.rb, line 46
def extension(reflection)
  reflection.respond_to?(:build_join_constraint) ?
    BuildJoinConstraint : JoinScope
end
klass() click to toggle source
# File lib/thinking_sphinx/active_record/depolymorph/overridden_reflection.rb, line 38
def klass
  self.class.overridden_classes[reflection.class] ||= begin
    subclass = Class.new reflection.class
    subclass.include extension(reflection)
    subclass
  end
end