2008-09-23 2 views
9

Wir haben eine App mit einem umfangreichen Adminbereich. Wir haben einen kleinen Auslöser, der mit Funktionen zufrieden ist (wie Sie) und suchen nach einer schnellen und einfachen Möglichkeit zu überwachen, "wer was nutzt".Benutzerüberwachung in Rails

Idealerweise ein einfaches Juwel, das es uns ermöglicht, Controller/Aktionen pro Benutzer zu verfolgen, um ein Bild der verwendeten und der nicht verwendeten Funktionen zu erstellen.

Alles gibt, die Sie empfehlen würden ..

Dank

Dom

Antwort

10

Ich weiß nicht, dass es ein beliebtes Schmuckstück oder Plugin für diese ist;

aus dem Gedächtnis:

class ApplicationController < ActionController::Base 
    before_filter :audit_events 
    # ... 

    protected 
    def audit_events 
    local_params = params.clone 
    controller = local_params.delete(:controller) 
    action = local_params.delete(:action) 
    Audit.create(
     :user => current_user, 
     :controller => controller, 
     :action => action, 
     :params => local_params 
    ) 
    end 
end 

Dies setzt voraus, dass Sie so etwas wie restful_authentication verwenden aktuelle Benutzer zu bekommen, natürlich in der Vergangenheit habe ich diese Art von Auditing als before_filter in Applicationcontroller realisiert.

EDIT: Je nachdem, wie Verbände eingerichtet sind, würden Sie noch besser machen das Audit.create Bit mit diesem zu ersetzen:

current_user.audits.create({ 
    :controller => controller, 
    :action => action, 
    :params => local_params 
}) 

Scoping Kreationen über Active assoiations == best practice

+0

Du musst Params klonen oder du riskierst Dinge mit dem Löschen zu brechen! –

+0

Guter Punkt! bearbeitet, um zu beheben. –

+0

Ich weiß, es ist zwei Jahre her, aber mit der Parameterfilterung dieser ist besser als 'params' ' local_params request.filtered_parameters.dup' –