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。 –