ich suche derzeit nach einem Weg möglichst elegant ein last_change_by
Attribut
zu führen. (D.h. Jede Entität hat das Attribut last_change_by, das bei jeder
Änderung auf den aktuellen Benutzer (liegt in der Session) gesetzt werden
muss).
Der Benutzer-Namen, der in der Session und somit Controller zur Verfügung
steht, muss also für jedes Modell und für jede Schreiboperation zur Verfügung
zu stehen.
Da die Anwendung sehr weit forgeschritten ist und an vielen stellen,
Schreibzufgriffe stattfinden wäre es aufwendig das Attribut überall
nachzuziehen und würde zugleich zu etwas aufgeblähtem Code führen.
Mein Gedanke geht in die Richtung, diese Information irgendwie als
Aspekt
einzuschieben.
Habt ihr eine Idee, wie dies Funktionieren könnte?
ich suche derzeit nach einem Weg möglichst elegant ein last_change_by
Attribut zu führen. (D.h. Jede Entität hat das Attribut
last_change_by, das bei jeder Änderung auf den aktuellen Benutzer
(liegt in der Session) gesetzt werden muss).
before_save-Callback
Der Benutzer-Namen, der in der Session und somit Controller zur
Verfügung steht, muss also für jedes Modell und für jede
Schreiboperation zur Verfügung zu stehen.
Die typische Vorgehensweise ist, in einem before_filter den Benutzer in
einer quasi-globalen Variablen zu speichern, etwas User#current_user.
Die typische Vorgehensweise ist, in einem before_filter den Benutzer in
einer quasi-globalen Variablen zu speichern, etwas User#current_user.
ehm, welche Gültigkeit haben eigentlich diese globalen Variablen?
Kann es sein, dass (z.B. in einem fastCGI)-Umfeld vers. requests in die
Quere
kommen?
Die typische Vorgehensweise ist, in einem before_filter den
Benutzer in einer quasi-globalen Variablen zu speichern, etwas
User#current_user.
ehm, welche Gültigkeit haben eigentlich diese globalen Variablen?
Kann es sein, dass (z.B. in einem fastCGI)-Umfeld vers. requests in
die Quere kommen?
Nein. Ein Server, ob nun FastCGI, Mongrel oder sonstwas, behandelt in
Rails jeweils zu einen Request zur selben Zeit. Multithreading findet
nicht statt. Du musst aber natürlich bei jedem Request zu Beginn
User#current_user setzen, andernfalls steht darin noch der User des
letzten Requests.