delete_all(conditions = nil)
Instance Public methods
Deletes the records matching conditions
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.
1 2 3 | Post.delete_all( "person_id = 5 AND (category = 'Something' OR category = 'Else')" ) Post.delete_all([ "person_id = ? AND (category = ? OR category = ?)" , 5 , 'Something' , 'Else' ]) 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 a limit scope is supplied, delete_all
raises an ActiveRecord error:
1 2 | Post.limit( 100 ).delete_all # => ActiveRecord::ActiveRecordError: delete_all doesn't support limit scope |
Please login to continue.