我的控制器中有一个特定的 contentType 模型。我需要通过预加载来捕获此页面中的所有内容套件。这是它的 fetch 方法:
def fetch_content_suites
ContentSuite
.includes(:tools)
.where(tools: { content_type_id: content_type.id })
end
ContentSuite 是这里的父类。它有很多已发布的工具。在模型中它看起来像:
has_many :tools, -> { distinct }, through: :toolkits, class_name: "Tool", source: :tools
内容套件 -> 工具包 -> 工具。(我通过 content_suite 的工具包创建了一个自定义关联来访问工具) 工具和工具包也有多对多关联。
这包括效果很好,此页面中只有 2 个查询。浏览/在服务器日志中时没有任何项目符号错误。但是当我尝试运行它的规格时:
Bullet::Notification::UnoptimizedQueryError:
user: damirnurgaliev
GET /content_suites/85
USE eager loading detected
ContentSuite => [:toolkits]
Add to your finder: :includes => [:toolkits]
是子弹虫还是我的错?感谢大家。