Module: Datasource::ConsumerAdapters::ActiveModelSerializers::ArraySerializer

Defined in:
lib/datasource/consumer_adapters/active_model_serializers.rb

Instance Method Summary collapse

Instance Method Details

#initialize_with_datasource(objects, options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/datasource/consumer_adapters/active_model_serializers.rb', line 7

def initialize_with_datasource(objects, options = {})
  datasource_class = options.delete(:datasource)
  adapter = Datasource.orm_adapters.find { |a| a.is_scope?(objects) }
  if adapter && !adapter.scope_loaded?(objects)
    datasource_class ||= adapter.scope_to_class(objects).default_datasource

    scope = begin
      objects
      .with_datasource(datasource_class)
      .for_serializer(options[:serializer])
      .datasource_params(*[options[:datasource_params]].compact)
    rescue NameError
      if options[:serializer].nil?
        return initialize_without_datasource(objects, options)
      else
        raise
      end
    end

    records = adapter.scope_to_records(scope)

    initialize_without_datasource(records, options)
  else
    initialize_without_datasource(objects, options)
  end
end