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?