我正在查看官方 Rails 文档,该文档显示了如何使用“find_each”方法。这是他们给出的一个例子
Person.where("age > 21").find_each do |person|
person.party_all_night!
end
这一次处理 1000 条记录。但是,我仍然感到困惑。这如何转化为 SQL?允许 Ruby 一次只能处理 1000 条记录的幕后发生了什么?
我有点困惑的原因是因为似乎 Person.where("age > 21") 会首先执行,这将返回所有结果。
例如:
Person.where("age > 21").limit(10)
会先返回内存中的所有人,然后给你前 10 个,对吧?