Class: ActiveRecord::Reflection::AbstractReflection

Inherits:
Object
  • Object
show all
Defined in:
lib/better_record/concerns/active_record_extensions/reflection_extensions.rb

Direct Known Subclasses

RuntimeReflection

Instance Method Summary collapse

Instance Method Details

#join_scope(table, foreign_klass) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/better_record/concerns/active_record_extensions/reflection_extensions.rb', line 8

def join_scope(table, foreign_klass)
  predicate_builder = predicate_builder(table)
  scope_chain_items = join_scopes(table, predicate_builder)
  klass_scope       = klass_join_scope(table, predicate_builder)

  if type
    if options[:strict_primary_type]
      klass_scope.where!(type => BetterRecord::PolymorphicOverride.polymorphic_value(foreign_klass, options))
    else
      klass_scope.where!(type => BetterRecord::PolymorphicOverride.all_types(foreign_klass))
    end
  end

  scope_chain_items.inject(klass_scope, &:merge!)
end