Ruby on rails Rails,使用:has\u many删除子项而不删除父项
我有Ruby on rails Rails,使用:has\u many删除子项而不删除父项,ruby-on-rails,children,has-many,Ruby On Rails,Children,Has Many,我有 我怎样才能做到这一点呢?其中一项或两项都可以: @obj = MyContainer.find_by_id(10) @obj.my_objects.delete_all 是一个ActiveRecord::Base类方法 你应该使用。比如: MyContainer.find(10).my_objects.destroy_all MyContainer.find(10).my_objects.each(&:destroy) 如果您不需要先查找您的MyContainer(或将其用
我怎样才能做到这一点呢?其中一项或两项都可以:
@obj = MyContainer.find_by_id(10)
@obj.my_objects.delete_all
是一个ActiveRecord::Base
类方法
你应该使用。比如:
MyContainer.find(10).my_objects.destroy_all
MyContainer.find(10).my_objects.each(&:destroy)
如果您不需要先查找您的
MyContainer
(或将其用于其他内容),正确使用delete\u all
会更快
编辑:适用于rails 3
MyObject.delete_all(["my_container_id = ?", 10])
您可以直接删除对象,如下所示
MyObject.where(my_container_id: 10).delete_all
使用后者,解决方案会将每个对象加载到内存中,速度会很慢。可能想使用第一个解决方案。两者都将每个对象实例化到内存中。
MyObject.delete_all(["my_container_id = ?", 10])
MyObject.where(my_container_id: 10).delete_all
MyObject.delete_all(["my_container_id=?", 10])