如何解决避免对包含表的 Actiontext::RichText 进行 N+1 查询
我的数据是这样设置的: 一个 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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。