Module: AggtiveRecord::EggScopes::Collation::Rate::ClassMethods

Defined in:
lib/aggtive_record/egg_scopes/collation/rate_per.rb

Overview

Public: a rate expects that ActiveRelation has a grouping self is a ActiveRecord scope

Instance Method Summary collapse

Instance Method Details

#rate_per(time_period, timespan_in_seconds = nil) ⇒ Object

Public

Returns float indicating rate of records per given time period



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/aggtive_record/egg_scopes/collation/rate_per.rb', line 16

def rate_per(time_period, timespan_in_seconds = nil)
  # tk: this may be unnecessary
  records = self.scoped.to_a

  # eg. :hour is 3600 seconds
  time_period_in_secs = AggtiveRecord::Time.to_seconds(time_period)

  #e.g. whatever is passed in, or all of them from the beginning to end of reconrds
  timespan_in_seconds ||= self.timespan_to_now(records)

            

  return records.size.to_f * time_period_in_secs / timespan_in_seconds
end