Sha256: 7f29aad423e984028ab58d17addb2d11dfc6c8b5a3bfa783883c20e299c4010c

Contents?: true

Size: 943 Bytes

Versions: 64

Compression:

Stored size: 943 Bytes

Contents

# frozen_string_literal: true

module ActiveRecord
  class PredicateBuilder
    class AssociationQueryValue # :nodoc:
      def initialize(associated_table, value)
        @associated_table = associated_table
        @value = value
      end

      def queries
        [ associated_table.join_foreign_key => ids ]
      end

      private
        attr_reader :associated_table, :value

        def ids
          case value
          when Relation
            value.select_values.empty? ? value.select(primary_key) : value
          when Array
            value.map { |v| convert_to_id(v) }
          else
            convert_to_id(value)
          end
        end

        def primary_key
          associated_table.join_primary_key
        end

        def convert_to_id(value)
          if value.respond_to?(primary_key)
            value.public_send(primary_key)
          else
            value
          end
        end
    end
  end
end

Version data entries

64 entries across 60 versions & 6 rubygems

Version Path
activerecord-6.1.7.10 lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-6.1.7.9 lib/active_record/relation/predicate_builder/association_query_value.rb
cm-admin-1.5.22 vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.5.1/lib/active_record/relation/predicate_builder/association_query_value.rb
cm-admin-1.5.21 vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.5.1/lib/active_record/relation/predicate_builder/association_query_value.rb
cm-admin-1.5.20 vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.5.1/lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-6.1.7.8 lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-6.1.7.7 lib/active_record/relation/predicate_builder/association_query_value.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/activerecord-7.0.2.3/lib/active_record/relation/predicate_builder/association_query_value.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/activerecord-6.1.6.1/lib/active_record/relation/predicate_builder/association_query_value.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-6.1.7.6 lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-6.1.7.5 lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-7.0.5.1 lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-6.1.7.4 lib/active_record/relation/predicate_builder/association_query_value.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/activerecord-6.1.6.1/lib/active_record/relation/predicate_builder/association_query_value.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/activerecord-7.0.2.3/lib/active_record/relation/predicate_builder/association_query_value.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/activerecord-7.0.3.1/lib/active_record/relation/predicate_builder/association_query_value.rb
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4/lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-7.0.5 lib/active_record/relation/predicate_builder/association_query_value.rb
activerecord-7.0.4.3 lib/active_record/relation/predicate_builder/association_query_value.rb