module ActiveRecord::CounterCache
Public Instance Methods
update_counters_with_condition(id, counters)
click to toggle source
# File lib/update_counters_with_condition.rb, line 5 def update_counters_with_condition(id, counters) if id.is_a?(Hash) updates = counters.inject([]) { |list, (counter_name, increment)| sign = increment < 0 ? "-" : "+" list << "#{connection.quote_column_name(counter_name)} = COALESCE(#{connection.quote_column_name(counter_name)}, 0) #{sign} #{increment.abs}" }.join(", ") condition = id.map{|column_name, value| "#{connection.quote_column_name(column_name)} = #{quote_value(value)}"}.join(" AND ") update_all(updates, condition) else update_counters(id, counters) end end