如何在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