EachBatch module doesn't support eager loading polymorphic associations
There is currently a cop that guard against using ActiveRecord::Batches#in_batches
and to favor the EachBatch#each_batch
method. This method fails when we try to eager-load polymorphic association.
class Upload < ActiveRecord::Base
include EachBatch
...
end
> Upload.includes(:model).each_batch(of: 1, &:count)
ActiveModel::MissingAttributeError: missing attribute: model_type
> Upload.includes(:model).in_batches(of: 1, &:count)
(0.3ms) SELECT "uploads"."id" FROM "uploads" ORDER BY "uploads"."id" ASC LIMIT 1
Upload Load (0.1ms) SELECT "uploads".* FROM "uploads" WHERE "uploads"."id" = 166
Snippet Load (0.3ms) SELECT "snippets".* FROM "snippets" WHERE "snippets"."id" IN (56)
(0.3ms) SELECT "uploads"."id" FROM "uploads" WHERE ("uploads"."id" > 166) ORDER BY "uploads"."id" ASC LIMIT 1
Upload Load (0.2ms) SELECT "uploads".* FROM "uploads" WHERE "uploads"."id" = 167
Namespace Load (0.2ms) SELECT "namespaces".* FROM "namespaces" WHERE "namespaces"."id" IN (4)
(0.2ms) SELECT "uploads"."id" FROM "uploads" WHERE ("uploads"."id" > 167) ORDER BY "uploads"."id" ASC LIMIT 1
Upload Load (0.2ms) SELECT "uploads".* FROM "uploads" WHERE "uploads"."id" = 168
Project Load (0.3ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" IN (1)
(0.3ms) SELECT "uploads"."id" FROM "uploads" WHERE ("uploads"."id" > 168) ORDER BY "uploads"."id" ASC LIMIT 1
Upload Load (0.3ms) SELECT "uploads".* FROM "uploads" WHERE "uploads"."id" = 169
Project Load (0.4ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" IN (35)
(0.2ms) SELECT "uploads"."id" FROM "uploads" WHERE ("uploads"."id" > 169) ORDER BY "uploads"."id" ASC LIMIT 1
Upload Load (0.3ms) SELECT "uploads".* FROM "uploads" WHERE "uploads"."id" = 170
Project Load (0.3ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" IN (36)
(0.2ms) SELECT "uploads"."id" FROM "uploads" WHERE ("uploads"."id" > 170) ORDER BY "uploads"."id" ASC LIMIT 1
I think this should be supported.