问题描述
我的数据是这样设置的: 一个 Chat has_many 消息 一条消息 has_rich_text :detail_html
无论如何,我正在尝试执行返回所有聊天记录的查询。该查询如下所示:
Chat.all.includes(:messages)
但是,由于 ActionText,我注意到我仍然有一个 N+1 查询,这是有道理的。我见过像 Message.all.with_rich_text_meal_details 这样的东西,但问题是我没有用 has_rich_text 查询表,而是查询相关表。有任何想法吗?谢谢!
解决方法
范围:"with_rich_text_#{name}",-> { includes("rich_text_#{name}") }
从 source code 开始,has_one rich_text_*
与添加的 Model
之间存在隐式关系 has_rich_text
。就您而言,Message has_one rich_text_meal_details
。
因此您可以尝试通过以下方式快速加载 meal_details
:
Chat.all.includes(messages: :rich_text_meal_details)