aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-08-15 08:45:15 -0700
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-08-15 08:45:15 -0700
commitcf232e37adc8cdf570a04415ba4c51a73dd06463 (patch)
treef75231993eb99848a389c0aad1d2a7c47e0d6f70 /activerecord/lib/active_record/relation.rb
parent0d0d46222cb87032e76bad42ef812b7ee7367873 (diff)
parentf28096476dee5c7d5af037e4cdf06b339fe4778a (diff)
downloadrails-cf232e37adc8cdf570a04415ba4c51a73dd06463.tar.gz
rails-cf232e37adc8cdf570a04415ba4c51a73dd06463.tar.bz2
rails-cf232e37adc8cdf570a04415ba4c51a73dd06463.zip
Merge pull request #7133 from roshats/fix_update_all_with_blank_argument
Change Relation#update_all with blank argument to raise an ArgumentError instead of trying an update with empty fields.
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 9ed3256ae9..1abbc58314 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -258,6 +258,8 @@ module ActiveRecord
# # Update all books that match conditions, but limit it to 5 ordered by date
# Book.where('title LIKE ?', '%Rails%').order(:created_at).limit(5).update_all(:author => 'David')
def update_all(updates)
+ raise ArgumentError, "Empty list of attributes to change" if updates.blank?
+
stmt = Arel::UpdateManager.new(arel.engine)
stmt.set Arel.sql(@klass.send(:sanitize_sql_for_assignment, updates))
@@ -466,7 +468,7 @@ module ActiveRecord
# Returns sql statement for the relation.
#
# Users.where(name: 'Oscar').to_sql
- # # => SELECT "users".* FROM "users" WHERE "users"."name" = 'Oscar'
+ # # => SELECT "users".* FROM "users" WHERE "users"."name" = 'Oscar'
def to_sql
@to_sql ||= klass.connection.to_sql(arel, bind_values.dup)
end