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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top