Sha256: 38e1e607e365575b42059a0025375f22bb70e76516f286720e25d72344a0e193

Contents?: true

Size: 1.19 KB

Versions: 5

Compression:

Stored size: 1.19 KB

Contents

# active_record_5.1_ruby_2/join_association.rb

module Polyamorous
  module JoinAssociationExtensions
    include SwappingReflectionClass
    def self.prepended(base)
      base.class_eval { attr_reader :join_type }
    end

    def initialize(reflection, children, polymorphic_class = nil,
                   join_type = Arel::Nodes::InnerJoin)
      @join_type = join_type
      if polymorphic_class && ::ActiveRecord::Base > polymorphic_class
        swapping_reflection_klass(reflection, polymorphic_class) do |reflection|
          super(reflection, children)
          self.reflection.options[:polymorphic] = true
        end
      else
        super(reflection, children)
      end
    end

    # Reference: https://github.com/rails/rails/commit/9b15db5
    # NOTE: Not sure we still need it?
    #
    def ==(other)
      base_klass == other.base_klass
    end

    def build_constraint(klass, table, key, foreign_table, foreign_key)
      if reflection.polymorphic?
        super(klass, table, key, foreign_table, foreign_key)
          .and(foreign_table[reflection.foreign_type].eq(reflection.klass.name))
      else
        super(klass, table, key, foreign_table, foreign_key)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
ransack-1.8.10 lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb
ransack-2.0.0 lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb
ransack-1.8.9 lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb
polyamorous-1.3.3 lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb
polyamorous-1.3.2 lib/polyamorous/activerecord_5.1_ruby_2/join_association.rb