我明白一个人可以做类似Model.destroy_all(status: "inactive")
。我希望我的情况很简单,但我不能那样做。我有一个加密的字符串列,通过attr_encrypted gem映射到一个整数数组,这使得这个麻烦。如何从我的数据库中删除Rails中的ID /对象数组?
基本上,我有这样一个数组:array = [object1, object2, object3, object4]
其中每个对象是模型对象。
我想能够做一些像Model.destroy_all(array)
或Model.delete_all(array)
,但我无法做到这一点。
我甚至尝试了以下方法:Model.destroy_all(array.map(&:id))
和Model.delete_all(array.map(&:id))
我无法成功删除它们。
我希望尽可能高效,我不认为array.map(&:destroy)
或array.map(&:delete)
会有效,因为我会得到N
调用。我应该这样做,并在交易中包装它?有没有更好的办法?
更新:我想通了,下面列出了一个答案。
你可以做'Model.destroy_all(id:array.map(&:id))'。我相信它比'Model.destroy(array)'更好的优化。 – hlcs 2017-06-30 16:12:10