method

increment_counter

Importance_2
Ruby on Rails latest stable (v7.1.3.2) - 0 notes - Class: ClassMethods
increment_counter(counter_name, id, by: 1, touch: nil) public

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 to 1.

  • :touch - Touch timestamp columns when updating. Pass true to touch updated_at and/or updated_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)
Show source
Register or log in to add new notes.