method

delete_all

rails latest stable - Class: ActiveRecord::Relation
delete_all()
public

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

Vidmantas ยท Feb 23, 20111 thank

It's also available to use after scope chain too, like in any other AR action, for example:

User.where('age > 69').delete_all