我在表格中有很多记录,我试图使用find_each进行更改。我的问题是:如果我有一个使用find_each的范围,并且在find_each中我改变了我正在查找某些记录的值,那么这些受影响的记录是否也会在find_each中处理?例如,如果我这样做:
User.where(classification: nil).find_each do |u|
if u.age > 21
u.update!(classification: "accepted")
User.where(classification: nil).where(age > 21).each do |other|
other.update!(classification: "rejected")
end
end
在处理以前的用户时,我更新的其他用户记录是否仍会在find_each中处理,因为他们的作用域的值已被更改?
答案 0 :(得分:0)
我不认为它会在更新后最终出现在find_each列表中。它使用主键作为排序,并且在后续循环中不会再次击中低ID。
修改
抱歉 - 我看到你现在要问的是什么。是的,它会影响它。更改所有分类以使它们不再为nil将导致外部循环在第二批中不返回任何项目。