Class: ActiveRecord::Reflection::AbstractReflection
- Defined in:
- lib/better_record/concerns/active_record_extensions/reflection_extensions.rb
Direct Known Subclasses
MacroReflection, PolymorphicReflection, RuntimeReflection, ThroughReflection
Instance Method Summary collapse
Instance Method Details
#join_scope(table, foreign_table, foreign_klass = nil) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/better_record/concerns/active_record_extensions/reflection_extensions.rb', line 8 def join_scope(table, foreign_table, foreign_klass = nil) unless foreign_klass foreign_klass = foreign_table foreign_table = nil end predicate_builder = predicate_builder(table) scope_chain_items = join_scopes(table, predicate_builder) klass_scope = klass_join_scope(table, predicate_builder) key = join_keys.key foreign_key = join_keys.foreign_key klass_scope.where!(table[key].eq(foreign_table[foreign_key])) if foreign_table if type if [:strict_primary_type] klass_scope.where!(type => BetterRecord::PolymorphicOverride.polymorphic_value(foreign_klass, )) else klass_scope.where!(type => BetterRecord::PolymorphicOverride.all_types(foreign_klass)) end end ntc = begin klass.finder_needs_type_condition? rescue false end if ntc klass_scope.where!(klass.send(:type_condition, table)) end scope_chain_items.inject(klass_scope, &:merge!) end |