Rails 连接 + 包含同一张表?

Posted

技术标签:

【中文标题】Rails 连接 + 包含同一张表?【英文标题】:Rails joins + includes of same table? 【发布时间】:2021-12-22 03:35:36 【问题描述】:

在一个工作项目中,我看到很多类似的代码

SomeModel.includes(:comments).joins(:comments).[...] # many more where and order clauses, other stuff

我的问题是:像:comments 这样在同一张桌子上使用includesjoins 是否有意义?

【问题讨论】:

【参考方案1】:

这可能是有道理的。这两种方法服务于不同的目的。如果您想按评论属性过滤帖子,则需要joins。并且你需要includes 来避免在使用 cmets 渲染帖子时进行 N+1 查询。

【讨论】:

谢谢! :) 我现在意识到通过 SomeModel.includes(:cmets).references(:cmets) 也可以做到这一点,对吧? @PeterSlotko:听起来像:reddit.com/r/rails/comments/4ybybl/… 非常有用的链接!谢谢! :)

以上是关于Rails 连接 + 包含同一张表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 sql server 2008 的同一张表中使用计数和分组方式和自连接?

有条件加入同一张表两次

Ruby on Rails Scaffolding:同一张表的两个外键

同一张表的多个关联(多对多)Ruby on Rails

关系数据库:以不同的解释重用同一张表

如何在rails的同一个表中创建多对多