Sha256: d573dbf8f484fbd946fcde2b1be340eed6f53133656f31e1443b570ee384e663

Contents?: true

Size: 1.12 KB

Versions: 13

Compression:

Stored size: 1.12 KB

Contents

# encoding: UTF-8

module Goldiloader
  class AutoIncludeContext
    attr_reader :models

    def initialize
      @models = []
    end

    def self.register_models(models, included_associations = nil)
      auto_include_context = Goldiloader::AutoIncludeContext.new
      auto_include_context.register_models(models)

      Array.wrap(included_associations).each do |included_association|
        associations = included_association.is_a?(Hash) ?
            included_association.keys : Array.wrap(included_association)
        nested_associations = included_association.is_a?(Hash) ?
            included_association : Hash.new([])

        associations.each do |association|
          nested_models = models.flat_map do |model|
            model.association(association).target
          end.compact

          register_models(nested_models, nested_associations[association])
        end
      end
    end

    def register_models(models)
      Array.wrap(models).each do |model|
        model.auto_include_context = self
        self.models << model
      end
      self
    end

    alias_method :register_model, :register_models
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
goldiloader-2.1.2 lib/goldiloader/auto_include_context.rb
goldiloader-2.1.1 lib/goldiloader/auto_include_context.rb
goldiloader-2.1.0 lib/goldiloader/auto_include_context.rb
goldiloader-1.0.1 lib/goldiloader/auto_include_context.rb
goldiloader-2.0.1 lib/goldiloader/auto_include_context.rb
goldiloader-2.0.0 lib/goldiloader/auto_include_context.rb
goldiloader-1.0.0 lib/goldiloader/auto_include_context.rb
goldiloader-0.0.12 lib/goldiloader/auto_include_context.rb
goldiloader-0.0.11 lib/goldiloader/auto_include_context.rb
goldiloader-0.0.10 lib/goldiloader/auto_include_context.rb
goldiloader-0.0.9 lib/goldiloader/auto_include_context.rb
goldiloader-0.0.8 lib/goldiloader/auto_include_context.rb
goldiloader-0.0.7 lib/goldiloader/auto_include_context.rb