Eftersom du memoizar värdet i en klassmetod så kommer det att sparas tills klassen laddas om (dvs din app startas om). Vill du ha det ”per request” eller dvs per instans av klassen så bör du sätta det på instansnivå.
I regel så undviker jag memozation om jag inte ser att det finns ett reelt behov (väldigt långsamma återkommande queries etc som dyker upp fler gånger per request). Det kan lätt leda till svårhittade buggar.
Om du behöver spara undan något på klass nivå så måste du se till att rensa värdet efter varje request.
Jag antar att ”User.current” är det vanligaste exemplet. Det är helt klart något som bör undvikas om man kan men i det fallet du måste så är det vanligaste sättet att i en controller använda around_filter.
t.ex.
class SomeAuthenticatedController < ApplicationController
around_filter :set_current_user
private
def set_current_user
User.current = current_user if logged_in?
yield
ensure
User.current = nil
end
--
--
Du har erhållit detta e-postmeddelande eftersom du prenumererar på Svenska Rails-listan (Google Groups).
För att posta till listan, skicka e-post till rail...@googlegroups.com
För att gå ur listan, skicka e-post till rails-se+u...@googlegroups.com
För fler alternativ, besök listan på http://groups.google.com/group/rails-se?hl=sv
---
Det här meddelandet skickas till dig eftersom du prenumererar på gruppen "Svenska Rails-listan" i Google Grupper.
Om du vill sluta prenumerera på den här gruppen och inte längre få någon e-post från den skickar du ett e-postmeddelande till rails-se+u...@googlegroups.com.
Fler alternativ finns på https://groups.google.com/d/optout.
Enklaste lösningen är nog att hitta färdig kod för det här, t.ex. https://github.com/jnicklas/memoit, som hanterar olika argument/params.