mirror of https://github.com/rails/rails
move some of the update_all implementation to active_record_deprecated_finders
This commit is contained in:
parent
1344ed4fae
commit
1391d74e41
|
@ -257,23 +257,11 @@ module ActiveRecord
|
|||
# Customer.update_all :wants_email => true
|
||||
#
|
||||
# # Update all books with 'Rails' in their title
|
||||
# Book.update_all "author = 'David'", "title LIKE '%Rails%'"
|
||||
#
|
||||
# # Update all avatars migrated more recently than a week ago
|
||||
# Avatar.update_all ['migrated_at = ?', Time.now.utc], ['migrated_at > ?', 1.week.ago]
|
||||
#
|
||||
# # Update all books that match conditions, but limit it to 5 ordered by date
|
||||
# Book.update_all "author = 'David'", "title LIKE '%Rails%'", :order => 'created_at', :limit => 5
|
||||
#
|
||||
# # Conditions from the current relation also works
|
||||
# Book.where('title LIKE ?', '%Rails%').update_all(:author => 'David')
|
||||
#
|
||||
# # The same idea applies to limit and order
|
||||
# # 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, conditions = nil, options = {})
|
||||
if conditions || options.present?
|
||||
where(conditions).apply_finder_options(options.slice(:limit, :order)).update_all(updates)
|
||||
else
|
||||
def update_all(updates)
|
||||
stmt = Arel::UpdateManager.new(arel.engine)
|
||||
|
||||
stmt.set Arel.sql(@klass.send(:sanitize_sql_for_assignment, updates))
|
||||
|
@ -290,7 +278,6 @@ module ActiveRecord
|
|||
|
||||
@klass.connection.update stmt, 'SQL', bind_values
|
||||
end
|
||||
end
|
||||
|
||||
# Updates an object (or multiple objects) and saves it to the database, if validations pass.
|
||||
# The resulting object is returned whether the object was saved successfully to the database or not.
|
||||
|
|
Loading…
Reference in New Issue