Sha256: 6814efae2793469c43f843ab5814f35be64233c25f4e5e23e79751bbe9fd75a7

Contents?: true

Size: 1.16 KB

Versions: 30

Compression:

Stored size: 1.16 KB

Contents

module ActiveRecord
  module Associations
    # Helper class module which gets mixed into JoinDependency::JoinAssociation and AssociationScope
    module JoinHelper #:nodoc:

      def join_type
        Arel::InnerJoin
      end

      private

      def construct_tables
        tables = []
        chain.each do |reflection|
          tables << alias_tracker.aliased_table_for(
            table_name_for(reflection),
            table_alias_for(reflection, reflection != self.reflection)
          )

          if reflection.source_macro == :has_and_belongs_to_many
            tables << alias_tracker.aliased_table_for(
              (reflection.source_reflection || reflection).join_table,
              table_alias_for(reflection, true)
            )
          end
        end
        tables
      end

      def table_name_for(reflection)
        reflection.table_name
      end

      def table_alias_for(reflection, join = false)
        name = "#{reflection.plural_name}_#{alias_suffix}"
        name << "_join" if join
        name
      end

      def join(table, constraint)
        table.create_join(table, table.create_on(constraint), join_type)
      end
    end
  end
end

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
activerecord-4.0.13 lib/active_record/associations/join_helper.rb
activerecord-4.0.13.rc1 lib/active_record/associations/join_helper.rb
activerecord-4.0.11.1 lib/active_record/associations/join_helper.rb
activerecord-4.0.12 lib/active_record/associations/join_helper.rb
activerecord-4.0.11 lib/active_record/associations/join_helper.rb
activerecord-4.0.10 lib/active_record/associations/join_helper.rb
activerecord-4.0.10.rc2 lib/active_record/associations/join_helper.rb
activerecord-4.0.10.rc1 lib/active_record/associations/join_helper.rb
activerecord-4.0.9 lib/active_record/associations/join_helper.rb
activerecord-4.0.8 lib/active_record/associations/join_helper.rb
activerecord-4.0.7 lib/active_record/associations/join_helper.rb
activerecord-4.0.6 lib/active_record/associations/join_helper.rb
activerecord-4.0.6.rc3 lib/active_record/associations/join_helper.rb
activerecord-4.0.6.rc2 lib/active_record/associations/join_helper.rb
activerecord-4.0.6.rc1 lib/active_record/associations/join_helper.rb
activerecord-4.0.5 lib/active_record/associations/join_helper.rb
activerecord-4.0.4 lib/active_record/associations/join_helper.rb
activerecord-4.0.4.rc1 lib/active_record/associations/join_helper.rb
activerecord-4.0.3 lib/active_record/associations/join_helper.rb
activerecord-4.0.2 lib/active_record/associations/join_helper.rb