method

next_chain_scope

Importance_0
v7.1.3.4 - Show latest stable - 0 notes - Class: AssociationScope
next_chain_scope(scope, reflection, next_reflection) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

Hide source
# File activerecord/lib/active_record/associations/association_scope.rb, line 81
        def next_chain_scope(scope, reflection, next_reflection)
          primary_key = Array(reflection.join_primary_key)
          foreign_key = Array(reflection.join_foreign_key)

          table = reflection.aliased_table
          foreign_table = next_reflection.aliased_table

          primary_key_foreign_key_pairs = primary_key.zip(foreign_key)
          constraints = primary_key_foreign_key_pairs.map do |join_primary_key, foreign_key|
            table[join_primary_key].eq(foreign_table[foreign_key])
          end.inject(&:and)

          if reflection.type
            value = transform_value(next_reflection.klass.polymorphic_name)
            scope = apply_scope(scope, table, reflection.type, value)
          end

          scope.joins!(join(foreign_table, constraints))
        end
Register or log in to add new notes.