instance method
increment_counter
Ruby on Rails 8.1.2
Since v4.0.13Signature
increment_counter(counter_name, id, by: 1, touch: nil)
Increment a numeric field by one, via a direct SQL update.
This method is used primarily for maintaining counter_cache columns that are used to store aggregate values. For example, a DiscussionBoard may cache posts_count and comments_count to avoid running an SQL query to calculate the number of posts and comments there are, each time it is displayed.
Parameters
-
counter_name- The name of the field that should be incremented. -
id- The id of the object that should be incremented or an array of ids. -
:by- The amount by which to increment the value. Defaults to1. -
:touch- Touch timestamp columns when updating. Passtrueto touchupdated_atand/orupdated_on. Pass a symbol to touch that column or an array of symbols to touch just those ones.
Examples
# Increment the posts_count column for the record with an id of 5 DiscussionBoard.increment_counter(:posts_count, 5) # Increment the posts_count column for the record with an id of 5 # by a specific amount. DiscussionBoard.increment_counter(:posts_count, 5, by: 3) # Increment the posts_count column for the record with an id of 5 # and update the updated_at value. DiscussionBoard.increment_counter(:posts_count, 5, touch: true)
Parameters
-
counter_namereq -
idreq -
bykey = 1 -
touchkey = nil
Source
# File activerecord/lib/active_record/counter_cache.rb, line 173
def increment_counter(counter_name, id, by: 1, touch: nil)
update_counters(id, counter_name => by, touch: touch)
end
Defined in activerecord/lib/active_record/counter_cache.rb line 173
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::CounterCache::ClassMethods