module AwesomeCounterCache::ClassMethods

Public Instance Methods

awesome_counter_cache_for(relation_name, args = {}) click to toggle source
# File lib/awesome_counter_cache/class_methods.rb, line 2
def awesome_counter_cache_for(relation_name, args = {})
  id = awesome_counter_caches.length

  args[:column_name] ||= "#{model_name.plural}_count"
  args[:delta_magnitude] ||= proc { 1 }
  args[:relation_name] = relation_name
  args[:id] = id

  awesome_counter_caches[id] = args

  after_initialize do |model|
    awesome_counter_cache_after_initialize(args, model)
  end

  after_commit on: :create do |model|
    awesome_counter_cache_after_commit_on_create(args, model, relation_name)
  end

  after_commit on: :destroy do |model|
    awesome_counter_cache_after_commit_on_destroy(args, model, relation_name)
  end

  after_commit on: :update do |model|
    awesome_counter_cache_after_commit_on_update(args, model, relation_name)
  end
end
awesome_counter_caches() click to toggle source
# File lib/awesome_counter_cache/class_methods.rb, line 29
def awesome_counter_caches
  @awesome_counter_caches ||= {}
end