如何在Rails 3中一次销毁多个对象

我有一个试图一次删除多个对象的Rails应用程序。

我已经尝试像发送一套由','分隔符到轨摧毁方法,但它只销毁单个对象。 是否有可能删除导轨3中的多个对象。

destroy_all通过为每个实例化logging调用destroy方法破坏匹配条件的logging。 所以对象的callback被执行。

Model.destroy_all(:status => "inactive") Model.where(:id => [1,2,3,4,5]).destroy_all Model.where(:id => 1..5).destroy_all 

UPDATE

 User.where(:id => params[:ids]).destroy_all /users?ids[]=1&ids[]=2&ids[]=3 
 Model.delete([1,2,5,6]) 

要么

 Model.delete_all(["col_name in (?)", [1,2,5,6]]) 

只要通过ids数组

如果性能对您很重要,并且/或者您处理大型数据集,则应该优先使用delete_all over destroy_all。

Destroy_all将一次执行一个DELETE查询。 所以它可能非常慢。 有关delete_all和destroy_all之间区别的更多细节可以在此页面find。

由于@M库马尔的答案将被弃用新的铁路版本。

 Model.delete_all(["col_name in (?)", [1,2,5,6]]) DEPRECATION WARNING: Passing conditions to delete_all is deprecated and will be removed in Rails 5.1. 

这个命令可能会在未来帮助别人:

 Model.where(id: [1,2,5,6]).delete_all