module Datasource::Adapters::ActiveRecord::Model::ClassMethods

Public Instance Methods

datasource_module(&block) click to toggle source
# File lib/datasource/adapters/active_record.rb, line 117
def datasource_module(&block)
  default_datasource.instance_exec(&block)
end
default_datasource() click to toggle source
# File lib/datasource/adapters/active_record.rb, line 109
def default_datasource
  @default_datasource ||= begin
    "#{name}Datasource".constantize
  rescue NameError
    Datasource::From(self)
  end
end
for_serializer(serializer_class = nil) click to toggle source
# File lib/datasource/adapters/active_record.rb, line 75
def for_serializer(serializer_class = nil)
  if Datasource::Base.default_consumer_adapter.nil?
    fail Datasource::Error, "No serializer adapter loaded, see the active_loaders gem."
  end
  serializer_class ||=
    Datasource::Base.default_consumer_adapter.get_serializer_for(
      Adapters::ActiveRecord.scope_to_class(all))
  scope = scope_with_datasource_ext(serializer_class.use_datasource)
  scope.datasource_set(serializer_class: serializer_class)
end
upgrade_for_serializer(records, serializer_class = nil, datasource_class = nil) { |scope| ... } click to toggle source
# File lib/datasource/adapters/active_record.rb, line 90
def upgrade_for_serializer(records, serializer_class = nil, datasource_class = nil)
  scope = with_datasource(datasource_class).for_serializer(serializer_class)
  records = Array(records)

  pk = scope.datasource_get(:datasource_class).primary_key.to_sym
  if primary_keys = records.map(&pk)
    scope = scope.where(pk => primary_keys.compact)
  end

  scope = yield(scope) if block_given?

  datasource = scope.get_datasource
  if datasource.can_upgrade?(records)
    datasource.upgrade_records(records)
  else
    scope.to_a
  end
end
with_datasource(datasource_class = nil) click to toggle source
# File lib/datasource/adapters/active_record.rb, line 86
def with_datasource(datasource_class = nil)
  scope_with_datasource_ext(datasource_class)
end

Private Instance Methods

scope_with_datasource_ext(datasource_class = nil) click to toggle source
# File lib/datasource/adapters/active_record.rb, line 122
def scope_with_datasource_ext(datasource_class = nil)
  if all.respond_to?(:datasource_set)
    if datasource_class
      all.datasource_set(datasource_class: datasource_class)
    else
      all
    end
  else
    datasource_class ||= default_datasource

    all.extending(ScopeExtensions)
    .datasource_set(datasource_class: datasource_class)
  end
end