devise und current_user
-
11-10-2019 - |
Frage
Ich habe eine Rails 3 app, dass ich devise und declarative_authorization umzusetzen versuchen. Ein wichtiger Teil der declarative_authorization ist das Vorhandensein einer Funktion „role_symbols“ innerhalb des Benutzermodells. Weil ich der Art und Weise Rollen implementieren, ich bin eine Instanz Methode innerhalb des User-Modell der Umsetzung zu verfolgen einen Wert (nennen wir foo) als solche:
attr_accessor :foo
def foo=(val)
@foo = val
end
def foo
@foo
end
Dann werden wir den Wert von foo in der role_symbols Methode verwenden, um die gültigen Rollen zu begrenzen, vielleicht wie folgt aus:
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 überprüfen (oder Controller), der Wert von current_user.foo ist gleich Null.
Ist nicht das current_user Objekt nur ein Benutzer-Objekt, das in der Session beibehalten wird? Wenn ja, gibt es einige Sperre auf Instanz die Werte innerhalb des current_user Objekt einstellen?
Lösung
hatte das Glück, um die Antwort finden Sie hier: