Method: ActiveRecord::CounterCache::ClassMethods#decrement_counter
- Defined in:
- activerecord/lib/active_record/counter_cache.rb
#decrement_counter(counter_name, id, by: 1, touch: nil) ⇒ Object
Decrement a numeric field by one, via a direct SQL update.
This works the same as #increment_counter but reduces the column value by 1 instead of increasing it.
Parameters
-
counter_name- The name of the field that should be decremented. -
id- The id of the object that should be decremented or an array of ids. -
:by- The amount by which to decrement 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
# Decrement the posts_count column for the record with an id of 5
DiscussionBoard.decrement_counter(:posts_count, 5)
# Decrement the posts_count column for the record with an id of 5
by a specific amount.
DiscussionBoard.decrement_counter(:posts_count, 5, by: 3)
# Decrement the posts_count column for the record with an id of 5
# and update the updated_at value.
DiscussionBoard.decrement_counter(:posts_count, 5, touch: true)
203 204 205 |
# File 'activerecord/lib/active_record/counter_cache.rb', line 203 def decrement_counter(counter_name, id, by: 1, touch: nil) update_counters(id, counter_name => -by, touch: touch) end |