update_counters

in programming/rdoc/rdoc-example.rb [106:113]


    def update_counters(id, counters)
      updates = counters.inject([]) { |list, (counter_name, increment)|
        sign = increment < 0 ? "-" : "+"
        list << "#{connection.quote_column_name(counter_name)} = #{connection.quote_column_name(counter_name)} #{sign} #{increment.abs}"
      }.join(", ")
      update_all(updates, "#{connection.quote_column_name(primary_key)} = #{quote_value(id)}")
    end