I have
class MyContainer < ActiveRecord::Base
:has_many MyObjects, :dependent => :destroy
end
I want to delete all the MyObjects
in the container without having to delete the MyContainer
. My model does have :dependent => :destroy
, however I don't want to have to delete and re-create the object because it is slower.
Something like this does not work:
@obj = MyContainer.find_by_id(10)
@obj.my_objects.delete_all
How can I accomplish this?
delete_all
is an ActiveRecord::Base
class method.
You should use destroy_all
. Something like:
@container = MyContainer.find_by_id(10)
@container.my_objects.destroy_all
Using delete_all
properly would be faster if you don't need to lookup your MyContainer
first (or use it for other stuff)
MyObject.delete_all(["my_container_id = ?", 10])
EDIT: for rails 3
MyObject.where(my_container_id: 10).delete_all
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With