Rails model 记录遍历删除问题

alucardpj · July 03, 2012 · Last by chucai replied at July 03, 2012 · 3476 hits

对某个 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

Unknow user #8 July 03, 2012

#7 楼 @zhangyuan 那就用 destroy_all

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

You need to Sign in before reply, if you don't have an account, please Sign up first.