delete_all
delete_all()Deletes the records without instantiating the records first, and hence not calling the {#destroy}[rdoc-ref:Persistence#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.distinct.delete_all # => ActiveRecord::ActiveRecordError: delete_all doesn't support distinct
1Note
Works with scoped too
It's also available to use after scope chain too, like in any other AR action, for example:
User.where('age > 69').delete_all