Rails model 记录遍历删除问题

alucardpj · 2012年07月03日 · 最后由 chucai 回复于 2012年07月03日 · 3479 次阅读

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

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

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

我想错题目了...

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

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

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

使用 Product.delete_all 不会执行 callback

匿名 #8 2012年07月03日

#7 楼 @zhangyuan 那就用 destroy_all

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

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