Sha256: e2f4eeea261d3af6c82b2c1bc3a52f5b1fe75fdeae20aeea1579e5e5aa302a43

Contents?: true

Size: 621 Bytes

Versions: 7

Compression:

Stored size: 621 Bytes

Contents

# frozen_string_literal: true

module ActiveRecordDataLoader
  module Dsl
    class PolymorphicAssociation
      attr_reader :model_class, :name, :models, :queries

      def initialize(model_class, name)
        @model_class = model_class
        @name = name
        @models = {}
        @queries = {}
      end

      def model(klass, weight: 1, eligible_set: nil)
        @models[klass] = weight.to_i
        @queries[klass] = eligible_set if eligible_set
      end

      def weighted_models
        gcd = models.values.reduce(:gcd)

        models.map { |m, w| [m] * (w / gcd) }.flatten
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
active_record_data_loader-1.3.1 lib/active_record_data_loader/dsl/polymorphic_association.rb
active_record_data_loader-1.3.0 lib/active_record_data_loader/dsl/polymorphic_association.rb
active_record_data_loader-1.2.0 lib/active_record_data_loader/dsl/polymorphic_association.rb
active_record_data_loader-1.1.0 lib/active_record_data_loader/dsl/polymorphic_association.rb
active_record_data_loader-1.0.2 lib/active_record_data_loader/dsl/polymorphic_association.rb
active_record_data_loader-1.0.1 lib/active_record_data_loader/dsl/polymorphic_association.rb
active_record_data_loader-1.0.0 lib/active_record_data_loader/dsl/polymorphic_association.rb