instance method
delete_all
Ruby on Rails 5.0.7.2
Since v3.0.20Signature
delete_all(conditions = nil)
Deletes the records without instantiating the records first, and hence not calling the #destroy method nor invoking callbacks. This is a single SQL DELETE statement that goes straight to the database, much more efficient than #destroy_all. Be careful with relations though, in particular :dependent rules defined on associations are not honored. Returns the number of rows affected.
Post.where(person_id: 5).where(category: ['Something', 'Else']).delete_all
Both calls delete the affected posts all at once with a single DELETE statement. If you need to destroy dependent associations or call your before_* or after_destroy callbacks, use the #destroy_all method instead.
If an invalid method is supplied, #delete_all raises an ActiveRecordError:
Post.limit(100).delete_all
# => ActiveRecord::ActiveRecordError: delete_all doesn't support limit
Parameters
-
conditionsopt = nil
Source
# File activerecord/lib/active_record/relation.rb, line 516
def delete_all(conditions = nil)
invalid_methods = INVALID_METHODS_FOR_DELETE_ALL.select { |method|
if MULTI_VALUE_METHODS.include?(method)
send("#{method}_values").any?
elsif SINGLE_VALUE_METHODS.include?(method)
send("#{method}_value")
elsif CLAUSE_METHODS.include?(method)
send("#{method}_clause").any?
end
}
if invalid_methods.any?
raise ActiveRecordError.new("delete_all doesn't support #{invalid_methods.join(', ')}")
end
if conditions
ActiveSupport::Deprecation.warn(<<-MESSAGE.squish)
Passing conditions to delete_all is deprecated and will be removed in Rails 5.1.
To achieve the same use where(conditions).delete_all.
MESSAGE
where(conditions).delete_all
else
stmt = Arel::DeleteManager.new
stmt.from(table)
if joins_values.any?
@klass.connection.join_to_delete(stmt, arel, arel_attribute(primary_key))
else
stmt.wheres = arel.constraints
end
affected = @klass.connection.delete(stmt, 'SQL', bound_attributes)
reset
affected
end
end
Defined in activerecord/lib/active_record/relation.rb line 516
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Relation