2010-12-19 8 views
0

Ich habe eine Rails 3 App, die ich versuche, Devise und deklarative_authorization zu implementieren. Ein wichtiger Teil der deklarativen_Autorisierung ist das Vorhandensein einer Funktion "role_symbols" innerhalb des Benutzermodells. Weil ich die Art und Weise Rollen implementieren, ich innerhalb des User-Modells eine Instanz Methode bin die Umsetzung Spur von einem Wert zu halten (nennt sie foo) als solche:devise und current_user

attr_accessor :foo 

    def foo=(val) 
    @foo = val 
    end 

    def foo 
    @foo 
    end 

Dann werden wir den Wert von foo innerhalb der Verwendung role_symbols Verfahren der gültigen Rollen zu begrenzen, vielleicht so:

def role_symbols 
    roles.where("foo = ?", @foo).name.underscore.to_sym 
end 

das Problem ist, wenn ich versuche, den Wert von foo für die current_user in einem Controller zu setzen, wird der Wert nicht haften bleiben, zum Beispiel:

current_user.foo = 99 

ist erfolgreich, aber wenn ich den Wert in einer anderen Ansicht (oder Controller) überprüfe, ist der Wert von current_user.foo Null.

Ist das current_user-Objekt nicht nur ein Benutzerobjekt, das in der Sitzung beibehalten wird? Wenn ja, gibt es eine Sperre für das Setzen von Instanzwerten innerhalb des Objekts current_user?

Antwort