2012-10-23 9 views
7

Bei der Implementierung einiger Hilfsmethoden, manchmal möchte ich einige berechneten Ergebnis irgendwo von der Hilfsmethode als Cache zugänglich zu speichern.Caching ausgewertet Ergebnis in Schienen Helper-Methoden

Wenn ich es in Instanzvariable speichern, wird es Instanzen verschmutzen, so dass es nicht ratsam scheint, das zu tun.

Jeder gute Ort, um einen solchen Wert zu speichern? Oder solch schweres Rechnen in einem Helfer ist eine schlechte Idee?

Antwort

12

Manchmal verwende ich Rails-Cache, um diese Art von Werten zu speichern. Der Code ist wie folgt:

def helper_method 
    Rails.cache.fetch('helper_value') do 
    # calculate the value if it does not exist 
    ... 
    end 
end 
+1

Danke. Ich dachte, die Verwendung von Cache ist nicht das, was ich erwartet habe, aber aus der Sicht des Helfers ist dies der natürliche Weg, um das Problem zu lösen. Vielen Dank. – shigeya

+0

Nur ein Tipp: 'config.action_controller.perform_caching = false' deaktiviert Rails.cache.fetch nicht, nur den normalen ActionView' cache' Helfer. Siehe hierzu: http://stackoverflow.com/a/43991463/1290457 – sandre89