2014-02-20 34 views
0

您好我目前有一個幫助方法,得到Klass.all.map{|m| m.name}。現在我使用ID從數組中獲取名稱,如果我添加更多,它會自動更新。緩存數據庫結果作爲全球變量

當我在視圖的循環中使用這個幫助器方法時,我認爲它會使得每次都得到Klass的多個查詢,這意味着很多額外的工作。

我想知道如何「緩存」這個數組,或者如果我應該這樣做一個更好的方法。

謝謝!

回答

2

如果您處於相同的操作中,則SQL緩存將自動完成。你可以看到here的更詳細的解釋。順帶一提,使用pluck的效率可能更高,如Klass.pluck(:name)。這會優化你的SQL查詢。

+0

謝謝!我覺得它正在被緩存。只是想要一些文件。 – trigun0x2

+0

雖然它緩存了SQL查詢,但它不會緩存Ruby對象。這意味着,每次調用助手方法時都會啓動一個全新的數組。 –

1

你的helper方法應類似於此

def klass_names 
    @klass_names ||= Klass.all.map{|m| m.name} 
end