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 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) ⇒ Boolean
(private)
#destroy_row (private)
[ GitHub ]# File 'activerecord/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