instance method
delete
Ruby on Rails edge
Since v3.0.20Signature
delete(id_or_array)
Deletes the row with a primary key matching the id argument, using an SQL DELETE statement, and returns the number of rows deleted. Active Record objects are not instantiated, so the object’s callbacks are not executed, including any :dependent association options.
You can delete multiple rows at once by passing an Array of ids.
Note: Although it is often much faster than the alternative, #destroy, skipping callbacks might bypass business logic in your application that ensures referential integrity or performs other essential jobs.
Examples
# Delete a single row
Todo.delete(1)
# Delete multiple rows
Todo.delete([2,3,4])
Parameters
-
id_or_arrayreq
Source
# File activerecord/lib/active_record/relation.rb, line 1117
def delete(id_or_array)
return 0 if id_or_array.nil? || (id_or_array.is_a?(Array) && id_or_array.empty?)
if model.composite_primary_key? && !id_or_array.first.is_a?(Array)
id_or_array = [id_or_array]
end
where(model.primary_key => id_or_array).delete_all
end
Defined in activerecord/lib/active_record/relation.rb line 1117
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Relation