I was wondering if there is a specific reason why delete_all does not accept limits? Ultimately, I want to achieve batched deletes in my application and something like
delete_in_batches or even
delete_allthat accepts limits would be useful.
I can try adding this but wanted to get some feedback/suggestions first.
FWIW, passing a LIMIT clause to a DELETE is included in the SQL92 standard, but actually-implemented support is spotty:
Postgres: not supported
Oracle: not supported (but maybe hackable with ROWNUM tricks)
SQLite3: supported if enabled at compile time
SQL Server: not supported (but maybe with a TOP subquery?)
In addition to Matt’s suggestion, there is a usual workaround for this that’s achieved by copying all ids in batches to a separate table then joining on it. I guess it’s tricky to achieve with Rails given this table dependency. How would you solve it if it proves needed?