views:

176

answers:

1

Hi

We have an app with an extensive admin section. We got a little trigger happy with features (as you do) and are looking for some quick and easy way to monitor "who uses what".

Ideally a simple gem that will allow us to track controller/actions on a per user basis to build up a picture of the features that are used and those that are not.

Anything out there that you'd recommend..

Thanks

Dom

+6  A: 

I don't know that there's a popular gem or plugin for this; in the past, I've implemented this sort of auditing as a before_filter in ApplicationController:

from memory:

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

This assumes that you're using something like restful_authentication to get current user, of course.

EDIT: Depending on how your associations are set up, you'd do even better to replace the Audit.create bit with this:

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

Scoping creations via ActiveRecord assoiations == best practice

Ben Scofield
You need to clone params or you risk breaking stuff with the delete!
Orion Edwards
Good point! edited to fix.
Ben Scofield