diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-03-17 15:48:47 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-03-17 15:48:47 +0000 |
commit | a38f28fff1e9e3faeeb22ac9b7c6b3cdcb7e2b29 (patch) | |
tree | e0f0d882ca5bfd56704dad93f56235c43266f5c7 /activerecord/lib | |
parent | f87db851c680164b6474d783d5f29b6cb4c013c0 (diff) | |
download | rails-a38f28fff1e9e3faeeb22ac9b7c6b3cdcb7e2b29.tar.gz rails-a38f28fff1e9e3faeeb22ac9b7c6b3cdcb7e2b29.tar.bz2 rails-a38f28fff1e9e3faeeb22ac9b7c6b3cdcb7e2b29.zip |
Base.update_all :order and :limit options. Useful for MySQL updates that must be ordered to avoid violating unique constraints.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6440 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib')
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index cb50d64658..c680d7e304 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -501,9 +501,15 @@ module ActiveRecord #:nodoc: # Updates all records with the SET-part of an SQL update statement in +updates+ and returns an integer with the number of rows updated. # A subset of the records can be selected by specifying +conditions+. Example: # Billing.update_all "category = 'authorized', approved = 1", "author = 'David'" - def update_all(updates, conditions = nil) + # + # Optional :order and :limit options may be given as the third parameter, + # but their behavior is database-specific. + def update_all(updates, conditions = nil, options = {}) sql = "UPDATE #{table_name} SET #{sanitize_sql_for_assignment(updates)} " - add_conditions!(sql, conditions, scope(:find)) + scope = scope(:find) + add_conditions!(sql, conditions, scope) + add_order!(sql, options[:order], scope) + add_limit!(sql, options, scope) connection.update(sql, "#{name} Update") end |