Module: Mongoid::Tracking::Readers
- Included in:
- Tracker
- Defined in:
- lib/mongoid/tracking/readers.rb
Overview
Reader methods (previously known as “accessors”)
Instance Method Summary collapse
- #all_values ⇒ Object
- #all_values_total ⇒ Object
-
#date_cleanup ⇒ Object
We need the cleanup method only for methods who rely on date indexes to be valid (well formed) like first/last_date.
-
#first_date ⇒ Object
Utility methods.
- #first_value ⇒ Object
- #last_date ⇒ Object
- #last_days(how_much = 7) ⇒ Object
- #last_value ⇒ Object
- #on(date) ⇒ Object
-
#today ⇒ Object
Access methods.
- #yesterday ⇒ Object
Instance Method Details
#all_values ⇒ Object
40 41 42 |
# File 'lib/mongoid/tracking/readers.rb', line 40 def all_values on(first_date..last_date) if first_date end |
#all_values_total ⇒ Object
44 45 46 47 |
# File 'lib/mongoid/tracking/readers.rb', line 44 def all_values_total return all_values.sum.to_i if all_values && !all_values.nil? return 0 end |
#date_cleanup ⇒ Object
We need the cleanup method only for methods who rely on date indexes to be valid (well formed) like first/last_date. This is because Mongo update operations cleans up the last key, which in our case left the array in an inconsistent state.
Example: Before update:
{ :visits_data => {"14803" => {"22" => 1} } }
After updating with: Mongoid::Tracking::Readers.“$unset”=>{“visits_data“$unset”=>{“visits_data.14803“$unset”=>{“visits_data.14803.22”=>1
{ :visits_data => {"14803" => {} } }
We can NOT retrieve the first date with visits_data.keys.min
80 81 82 |
# File 'lib/mongoid/tracking/readers.rb', line 80 def date_cleanup @data.reject! {|k,v| v.count == 0} end |
#first_date ⇒ Object
Utility methods
50 51 52 53 54 55 |
# File 'lib/mongoid/tracking/readers.rb', line 50 def first_date date_cleanup return nil unless _ts = @data.keys.min return nil unless _h = @data[_ts].keys.min Time.from_key(_ts, _h) end |
#first_value ⇒ Object
18 19 20 |
# File 'lib/mongoid/tracking/readers.rb', line 18 def first_value data_for(first_date) end |
#last_date ⇒ Object
57 58 59 60 61 62 |
# File 'lib/mongoid/tracking/readers.rb', line 57 def last_date date_cleanup return nil unless _ts = @data.keys.max return nil unless _h = @data[_ts].keys.max Time.from_key(_ts, _h) end |
#last_days(how_much = 7) ⇒ Object
26 27 28 29 30 |
# File 'lib/mongoid/tracking/readers.rb', line 26 def last_days(how_much = 7) return [today] unless how_much > 0 now, hmd = Time.now, (how_much - 1) on( now.ago(hmd.days)..now ) end |
#last_value ⇒ Object
22 23 24 |
# File 'lib/mongoid/tracking/readers.rb', line 22 def last_value data_for(last_date) end |
#on(date) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/mongoid/tracking/readers.rb', line 32 def on(date) if date.is_a?(Range) whole_data_for_range(date) else whole_data_for(date) end end |
#today ⇒ Object
Access methods
10 11 12 |
# File 'lib/mongoid/tracking/readers.rb', line 10 def today whole_data_for(Time.now) end |
#yesterday ⇒ Object
14 15 16 |
# File 'lib/mongoid/tracking/readers.rb', line 14 def yesterday whole_data_for(Time.now - 1.day) end |