module Ohm::Tallyable
Public Class Methods
included(model)
click to toggle source
# File lib/ohm/tallyable.rb, line 59 def self.included(model) model.extend(Macros) end
Public Instance Methods
after_save()
click to toggle source
Calls superclass method
# File lib/ohm/tallyable.rb, line 75 def after_save _increment_tallies super end
before_delete()
click to toggle source
Calls superclass method
# File lib/ohm/tallyable.rb, line 63 def before_delete _decrement_tallies super end
before_update()
click to toggle source
Calls superclass method
# File lib/ohm/tallyable.rb, line 69 def before_update _decrement_tallies super end
Protected Instance Methods
_decrement_tallies()
click to toggle source
# File lib/ohm/tallyable.rb, line 92 def _decrement_tallies _update_tallies(-1) { |attribute| db.hget(key, attribute) } end
_increment_tallies()
click to toggle source
# File lib/ohm/tallyable.rb, line 96 def _increment_tallies _update_tallies(1) { |attribute| send(attribute) } end
_update_tallies(amount) { |options| ... }
click to toggle source
# File lib/ohm/tallyable.rb, line 100 def _update_tallies(amount, &block) return if new? self.class.tallies.each do |attribute, options| by = options[:by] ? {options[:by] => yield(options[:by])} : nil key = self.class._tally_key(attribute, by) if (value = yield(attribute)) key.zincrby(amount, value) # need to convert zscore to_i because older versions # return a double encoded in a string key.zrem(value) if key.zscore(value).to_i == 0 end end end