In Rails, what's the difference between find_each and where?
Solution 1:
An active record relation does not automatically load all records into memory.
When you call #each
, all records will be loaded into memory. When you call #find_each
, records will be loaded into memory in batches of the given batch size.
So when your query returns a number of records that would be too much memory for the server's available resources, then using #find_each
would be a great choice.
It's basically like using ruby's lazy enumeration #to_enum#lazy
with #each_slice
and then #each
(very convenient).