Method: ActiveRecord::CounterCache::ClassMethods#increment_counter
- Defined in:
- lib/active_record/counter_cache.rb
#increment_counter(counter_name, id, touch: nil) ⇒ Object
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.- :touch - Touch timestamp columns when updating.
Pass
trueto 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
# and update the updated_at value.
DiscussionBoard.increment_counter(:posts_count, 5, touch: true)
151 152 153 |
# File 'lib/active_record/counter_cache.rb', line 151 def increment_counter(counter_name, id, touch: nil) update_counters(id, counter_name => 1, touch: touch) end |