Module: Datasource::Adapters::ActiveRecord::Model::ClassMethods

Defined in:
lib/datasource/adapters/active_record.rb

Instance Method Summary collapse

Instance Method Details

#datasource_module(&block) ⇒ Object



117
118
119
# File 'lib/datasource/adapters/active_record.rb', line 117

def datasource_module(&block)
  default_datasource.instance_exec(&block)
end

#default_datasourceObject



109
110
111
112
113
114
115
# 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) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# 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) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# 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) ⇒ Object



86
87
88
# File 'lib/datasource/adapters/active_record.rb', line 86

def with_datasource(datasource_class = nil)
  scope_with_datasource_ext(datasource_class)
end