Rails model 记录遍历删除问题

alucardpj · 发布于 2012年07月03日 · 最后由 chucai 回复于 2012年07月03日 · 2285 次阅读
422

对某个model记录进行遍历,找出其中不符合要求的记录删掉,例如:

Product.all.each do |p|
  if something
    p.destroy
  end
end

问题是这样的写法是否安全?destroy记录以后会不会对以后的循环遍历产生影响?如果有危险该怎样处理才安全?

共收到 9 条回复
395

我想错题目了...

De6df3

额 Product.delete_all("something = something") 就可以了呀,不用循环的

422

#2楼 @huacnlee 多谢,activerecord的一些基本用法还是不熟啊,都是用起来再找

243

#4楼 @_samqiu good point. 👍

96

怕删错的时候,脚本的话,我会print出来,然后贴到相关Ticket的记录里。或者transaction+log到一个表里。

96

使用 Product.delete_all 不会执行callback

96

#7楼 @zhangyuan 那就用 destroy_all

983

如果要遍历,请使用 find_each 方法,这样才安全

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册