Foobar.joins(:baz).includes(:baz).count
=> 22926
Foobar.joins(:baz).includes(:baz).find_each.count
=> 998
Foobar.joins(:baz).find_each.count
=> 22926
在正确的情况下(第三)生成的SQL是SQL,看起来像的几个批次:
SELECT "foobar".* FROM "foobar" INNER JOIN "baz" ON
"baz"."foobar_id" = "foobar"."id" ORDER BY "foobar"."id" ASC LIMIT $1
在失败
(第二)的情况下有一个单一的查询看起来像:
SELECT "foobar"."id" AS t0_r0
"baz"."id" AS t1_r0
"baz"."foobar_id" AS t1_r1
FROM "foobar" INNER JOIN "baz" ON "baz"."foobar_id" = "foobar"."id"
ORDER BY "foobar"."id" ASC LIMIT $1
其中所有字段都列为关于电子的不同列的不同的临时变量(例如t0_r0
) ach表(在实际查询中,第一个对象上有37个分割的30个,第二个对象上有7个)。
这是一个错误? includes
不允许在find_each
查询中被允许吗?难道我做错了什么?
Foobar
和Baz
之间的关系是Foobar
has_one
Baz
和Baz
belongs_to
Foobar
。
你使用的是什么Rails版本? –
我正在使用Rails 5.0.2 –