Class: Timeseries

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/generators/rails_timeseries/install/templates/timeseries.rb

Class Method Summary collapse

Class Method Details

.data(scope, options = {}) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/generators/rails_timeseries/install/templates/timeseries.rb', line 14

def self.data(scope, options = {})
  options.symbolize_keys!
  data = where(scope: scope)
  data = data.where('date > ?', options[:start_date]) if options[:start_date]
  data = data.where('date < ?', options[:end_date]) if options[:end_date]
  data = data.order(:date).pluck(:date, :count)
  Hash[data]
end

.generateObject



2
3
4
5
6
7
8
9
10
11
12
# File 'lib/generators/rails_timeseries/install/templates/timeseries.rb', line 2

def self.generate
  ActiveRecord::Base.subclasses.each do |model|
    next unless model.respond_to?(:timeseries_scopes)
    model.send(:timeseries_scopes).each do |scope|
      timeseries = Timeseries.find_or_initialize_by(date: Time.now.to_date, scope: scope.to_s)
      timeseries.count = model.send(scope).count
      timeseries.save
    end
  end
  return
end