You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用includes方法查询含/不含content settings的Content数据

使用includes实现目标查询

要将原有的left_outer_joins查询替换为includes实现,你可以结合references方法确保生成正确的LEFT OUTER JOIN语句,同时保留原有筛选逻辑:

contents = Content.includes(:content_setting)
                  .where('content_settings.editor_type = ? OR content_settings.id IS NULL', '0')
                  .references(:content_setting)

关键说明:

  • includes(:content_setting):用于预加载关联的content_setting数据,避免后续访问关联时出现N+1查询问题。
  • 原有的where条件完全保留,用来筛选两种目标数据:关联的content_setting中editor_type为'0'的Content,以及没有关联content_setting的Content。
  • .references(:content_setting):这是必须的,因为当includes配合针对关联表的where条件时,Rails需要明确引用该关联表,否则会默认执行两次独立查询(先查所有Content,再查符合条件的ContentSetting),导致筛选逻辑无法正确作用在Content集合上。

内容的提问来源于stack exchange,提问作者humanoid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:34:54