我正在创建一个如下所示的ActiveRecord查询:
Post.includes(:comments).where("created_at > ?", Time.zone.now)
在我的观看中,我正在循环每个帖子的评论,我正在执行此comment.post
,每个帖子的每个帖子都会创建N + 1,1。
所以我可以这样做来减少查询:
Post.includes(comments: :post).where("created_at > ?", Time.zone.now)
但是,这样做,我还有1个查询比我想要的还要多。 它首先进行查询以获取所有帖子,然后查询以获取所有评论,然后进行第3次查询以获取所有评论的所有帖子。
因为我已经在第一个查询中加载了帖子,所以我可以告诉ActiveRecord每个评论的帖子已经加载了,它应该连接后引用而不进行第3次查询?