Sha256: d934f64a9879dfb01b4df10e2368b23901d6326c3b27b5bc45f2f51a106af015

Contents?: true

Size: 888 Bytes

Versions: 2

Compression:

Stored size: 888 Bytes

Contents

module ActiveRecord
  module Associations
    class Preloader
      class HasMany
        safe_monkeypatch :owners_by_key, md5: '70b0628dd3c79928ee0bcff75052894a'

        def owners_by_key
          @owners_by_key ||= begin
            res = Hash.new { |h,k| h[k] = Set.new }
            owners.each do |owner|
              key = if owner_key_name.respond_to?(:call)
                owner_key_name.call(owner)
              else
                owner[owner_key_name]
              end

              if key.respond_to?(:each)
                key.each do |k|
                  k = k.to_s if key_conversion_required?
                  res[k] << owner
                end
              else
                key = key.to_s if key_conversion_required?
                res[key] << owner
              end
            end
            res
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 1 versions & 1 rubygems

Version Path
includes_many-0.1.0 lib/includes_many/active_record41/has_many.rb
includes_many-0.1.0 lib/includes_many/active_record42/has_many.rb