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 –