このコードはループ内でexists?を検証するクエリが走ってしまう。
bad.rb
user = User.includes(:entries => :comments).find(id)
user.entries.each do |entry|
if entry.comments.exists?
...
end
end
こうしておけばEagerLoadingが効くのでクエリが走らない。
better.rb
user = User.includes(:entries => :comments).find(id)
user.entries.each do |entry|
if entry.comments.present?
...
end
end