2
我试图优化数据库查询,因此在适当的地方添加了0。Rails模型:包含自己的方法
什么是适当的方式在我的模型内的方法中使用它?例如,如果我有一个方法,在我的模型,如:
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个查询好像我引用模型自我,但我似乎无法找到任何这个例子。
谢谢!
谢谢@JosephL - 这是一个伟大的想法,具体的例子,但我要求更一般的情况下,儿童模型的逻辑更复杂。我想你说的是,一旦实例被初始化,我不能再调用类方法,因为实例不包含子类。最好的解决方案是在控制器级使用include吗?这感觉不雅,因为在使用模型方法时,我可能会忘记在控制器级别执行此操作。 –
好吧,你是对的 - 我想关键的信息是如果你想在一个实例上使用它,那么你在错误的地方做它。我可能最好依靠子弹宝石,并在模型实例的实例化时调用include。 –