aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/base.rb
diff options
context:
space:
mode:
authormiloops <miloops@gmail.com>2008-06-26 13:46:33 -0300
committerJeremy Kemper <jeremy@bitsweat.net>2008-07-15 16:21:11 -0700
commit459e5817a513b95741b77af26771a6252a13d01f (patch)
treecc581c6fb6e67df99e75eaf8e3ccc4120ecc1d4f /activerecord/lib/active_record/base.rb
parent1edb5c85b58653a6fdc73ae1c6c63e317b466b27 (diff)
downloadrails-459e5817a513b95741b77af26771a6252a13d01f.tar.gz
rails-459e5817a513b95741b77af26771a6252a13d01f.tar.bz2
rails-459e5817a513b95741b77af26771a6252a13d01f.zip
update_counters should update nil values.
This allows counter columns with default null instead of requiring default 0. [#493 state:resolved]
Diffstat (limited to 'activerecord/lib/active_record/base.rb')
-rwxr-xr-xactiverecord/lib/active_record/base.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb
index 962c2b36d9..8ca5a85ad8 100755
--- a/activerecord/lib/active_record/base.rb
+++ b/activerecord/lib/active_record/base.rb
@@ -828,7 +828,7 @@ module ActiveRecord #:nodoc:
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}"
+ list << "#{connection.quote_column_name(counter_name)} = COALESCE(#{connection.quote_column_name(counter_name)}, 0) #{sign} #{increment.abs}"
}.join(", ")
update_all(updates, "#{connection.quote_column_name(primary_key)} = #{quote_value(id)}")
end