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 58
def cache_options
  klass.
  impressionist_counter_cache_options
end
column_name() click to toggle source
# File lib/impressionist/update_counters.rb, line 54
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 63
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 50
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
  Symbol === unique ?
  unique :
  :ip_address
end