class Impressionist::UpdateCounters
Attributes
klass[R]
receiver[R]
Public Class Methods
new(receiver)
click to toggle source
# File lib/impressionist/update_counters.rb, line 9 def initialize(receiver) @receiver = receiver @klass = receiver.class end
Public Instance Methods
update()
click to toggle source
# File lib/impressionist/update_counters.rb, line 14 def update klass. update_counters(id, column_name => result) end
Private Instance Methods
cache_options()
click to toggle source
# File lib/impressionist/update_counters.rb, line 66 def cache_options klass. impressionist_counter_cache_options end
column_name()
click to toggle source
# File lib/impressionist/update_counters.rb, line 62 def column_name cache_options[:column_name].to_s end
filter()
click to toggle source
# File lib/impressionist/update_counters.rb, line 36 def filter {:filter => unique_filter} end
id()
click to toggle source
# File lib/impressionist/update_counters.rb, line 71 def id receiver.id end
impressions_cached()
click to toggle source
Fetch impressions from a receiver's column
# File lib/impressionist/update_counters.rb, line 32 def impressions_cached receiver.send(column_name) || 0 end
impressions_total()
click to toggle source
Count impressions based on unique_filter
default is :ip_address when unique: true
# File lib/impressionist/update_counters.rb, line 27 def impressions_total receiver.impressionist_count filter end
result()
click to toggle source
# File lib/impressionist/update_counters.rb, line 21 def result impressions_total - impressions_cached end
unique()
click to toggle source
# File lib/impressionist/update_counters.rb, line 58 def unique cache_options[:unique] end
unique_filter()
click to toggle source
:filter gets assigned to :ip_address as default One could do is_impressionable :counter_cache => true, :unique => :any_other_filter
# File lib/impressionist/update_counters.rb, line 44 def unique_filter # Support `is_impressionable :counter_cache => true, :unique => true` # defaulting to `:ip_address` for counting unique impressions. return :ip_address if unique == true # Should a user try `is_impressionable :counter_cache => true, :unique => false` # then support that as well return :all if unique == false # Otherwise set the filter to either what the user supplied as the `unique` option # or the default (`:all`) unique end