我正在尝试优化数据库查询,因此在适当的时候添加了Model.includes(:related_model)
。
在我的模型中的方法中使用它的适当方法是什么?例如,如果我的模型中有一个方法,如:
def some_method
self.child_models.each do |child_model|
total_score += child_model.attribute
end
end
如何在这样的实例中使用includes
?这样做似乎很自然,但它不起作用:
def some_method
self.includes(:child_model).child_models.each do |child_model|
total_score += child_model.attribute
end
end
大多数情况下,当我生成一个n + 1查询时,似乎我正在引用模型自我,但我似乎找不到任何这样的例子。
谢谢!
答案 0 :(得分:0)
您在实例方法中使用self,因此self是您的类的实例,但include是一个类方法。您需要使用原始示例代码来使用包含Model.includes(:related_model)
的内容。我想你真正想要的是:
def some_method
self.child_models.sum('attribute')
end
当我在不关注实例的子节点的关系中构建条件时,我会使用包含。