diff options
author | miloops <miloops@gmail.com> | 2008-06-26 13:46:33 -0300 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-07-15 16:21:11 -0700 |
commit | 459e5817a513b95741b77af26771a6252a13d01f (patch) | |
tree | cc581c6fb6e67df99e75eaf8e3ccc4120ecc1d4f /activerecord/lib/active_record | |
parent | 1edb5c85b58653a6fdc73ae1c6c63e317b466b27 (diff) | |
download | rails-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')
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 2 |
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 |