Class: Snaptime::VirtualModels::Snaptime

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/snaptime/virtual_models/snaptime.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.columnsObject



8
9
10
11
12
# File 'lib/snaptime/virtual_models/snaptime.rb', line 8

def self.columns
  [
    ActiveRecord::ConnectionAdapters::Column.new('valid_from', nil, ActiveRecord::Base.connection.send(:lookup_cast_type, :timestamp))
  ]
end

.columns_hashObject



14
15
16
# File 'lib/snaptime/virtual_models/snaptime.rb', line 14

def self.columns_hash
  Hash[columns.map { |c| [c.name, c] }]
end

.load_schemaObject



4
5
6
# File 'lib/snaptime/virtual_models/snaptime.rb', line 4

def self.load_schema
  columns_hash
end

Instance Method Details

#model_namesObject



43
44
45
# File 'lib/snaptime/virtual_models/snaptime.rb', line 43

def model_names
  read_attribute(:model_names).split(',')
end

#modelsObject



47
48
49
# File 'lib/snaptime/virtual_models/snaptime.rb', line 47

def models
  model_names.collect(&:constantize)
end

#record_lookupsObject



20
21
22
# File 'lib/snaptime/virtual_models/snaptime.rb', line 20

def record_lookups
  read_attribute(:record_lookups).split(';')
end

#recordsObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/snaptime/virtual_models/snaptime.rb', line 24

def records
  to_fetch = {}

  record_lookups.collect do |identifier|
    klass_name, id = identifier.split(',')

    to_fetch[klass_name] ||= Set.new
    to_fetch[klass_name] << id
  end

  records = []

  to_fetch.each do |klass_name, ids|
    records += klass_name.constantize.unscoped.find(ids.to_a)
  end

  return records
end