ActiveRecord find_each seems limited, no pun intended

Can someone confirm that this concept of using find_each and the batch concept is limited?

My example is a Sales table that has represents a Product sold. So a Sale has a product. So I have my basic query:

sales.joins("INNER JOIN products ON products.product_id = sales.product_id").select("sales.*, products.*").where("ordered_by <= '2000-01-01')

So if I test this, I get my nice records. If I use find_each I get them too, provided there are less than 1000. If I have more than that, the query just keeps repeating the same data as the previous batch.

As a test I added in a find_each(batch_size: 10) to my command. All I see is a LIMIT 10 thrown in the query and that just dumps the same 10 records over and over and over again.

I would’ve expected that if I had say 1500 records, then 150 blocks printing out 10 records each, and boom. My 1500 records. I do not see that. At all.

So I assume this is because find_each cannot function on a relation with a JOIN? And I have no way of telling it to function off a particular ID, so it is screwed?

So how do people efficiently page through ActiveRecord queries with a JOIN or some other relations?