Module: ActiveRecord::CounterCache
| Relationships & Source Files | |
| Namespace Children | |
| 
       Modules: 
      
     | |
| Extension / Inclusion / Inheritance Descendants | |
| 
       Included In: 
      
     | |
| Super Chains via Extension / Inclusion / Inheritance | |
| 
         Class Chain: 
        
          self,
           
      ::ActiveSupport::Concern
         | 
    |
| Defined in: | activerecord/lib/active_record/counter_cache.rb | 
Class Method Summary
::ActiveSupport::Concern - Extended
| class_methods | Define class methods from given block.  | 
    
| included | Evaluate given block in context of base class, so that you can write class macros here.  | 
    
| prepended | Evaluate given block in context of base class, so that you can write class macros here.  | 
    
| append_features, prepend_features | |
Instance Method Summary
DSL Calls
included
[ GitHub ]8 9 10 11
# File 'activerecord/lib/active_record/counter_cache.rb', line 8
included do class_attribute :_counter_cache_columns, instance_accessor: false, default: [] class_attribute :counter_cached_association_names, instance_writer: false, default: [] end
Instance Method Details
#_create_record(attribute_names = self.attribute_names) (private)
[ GitHub ]# File 'activerecord/lib/active_record/counter_cache.rb', line 225
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)  ⇒ Boolean  (private)
  
#destroy_row (private)
[ GitHub ]# File 'activerecord/lib/active_record/counter_cache.rb', line 235
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