Sha256: a53de2af2b10e75decb4dcf43f721cc8856e2d1abaff4666d771e4556a6a1049

Contents?: true

Size: 1.5 KB

Versions: 19

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

module Torque
  module PostgreSQL
    module Reflection
      class BelongsToManyReflection < ::ActiveRecord::Reflection::AssociationReflection
        def macro
          :belongs_to_many
        end

        def connected_through_array?
          true
        end

        def belongs_to?
          true
        end

        def collection?
          true
        end

        def association_class
          Associations::BelongsToManyAssociation
        end

        def foreign_key
          @foreign_key ||= options[:foreign_key] || derive_foreign_key.freeze
        end

        def association_foreign_key
          @association_foreign_key ||= foreign_key
        end

        def active_record_primary_key
          @active_record_primary_key ||= options[:primary_key] || derive_primary_key
        end

        def join_primary_key(*)
          active_record_primary_key
        end

        def join_foreign_key
          foreign_key
        end

        private

          def derive_primary_key
            klass.primary_key
          end

          def derive_foreign_key
            "#{name.to_s.singularize}_ids"
          end
      end

      ::ActiveRecord::Reflection.const_set(:BelongsToManyReflection, BelongsToManyReflection)

      reflection_class = ::ActiveRecord::Reflection::AssociationReflection
      reflection_class::VALID_AUTOMATIC_INVERSE_MACROS.push(:belongs_to_many) \
        if reflection_class.const_defined?('VALID_AUTOMATIC_INVERSE_MACROS')
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
torque-postgresql-3.3.2 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.4.3 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.3.1 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.3.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.2.2 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.4.2 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.4.1 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.2.1 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.4.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.2.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.1.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.3.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.0.1 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.2.4 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-3.0.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.2.3 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.2.2 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.2.1 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb
torque-postgresql-2.2.0 lib/torque/postgresql/reflection/belongs_to_many_reflection.rb