module ActiveRecord::CounterCache

Active Record Counter Cache

Private Instance Methods

_create_record(attribute_names = self.attribute_names) click to toggle source
Calls superclass method
# File lib/active_record/counter_cache.rb, line 200
def _create_record(attribute_names = self.attribute_names)
  id = super

  counter_cached_association_names.each do |association_name|
    association(association_name).increment_counters
  end

  id
end
_foreign_keys_equal?(fkey1, fkey2) click to toggle source
# File lib/active_record/counter_cache.rb, line 226
def _foreign_keys_equal?(fkey1, fkey2)
  fkey1 == fkey2 || Array(fkey1).map(&:to_sym) == Array(fkey2).map(&:to_sym)
end
destroy_row() click to toggle source
Calls superclass method
# File lib/active_record/counter_cache.rb, line 210
def destroy_row
  affected_rows = super

  if affected_rows > 0
    counter_cached_association_names.each do |association_name|
      association = association(association_name)

      unless destroyed_by_association && _foreign_keys_equal?(destroyed_by_association.foreign_key, association.reflection.foreign_key)
        association.decrement_counters
      end
    end
  end

  affected_rows
end