module TrackChanges module ActionController # Sets up an around filter to assign the controller's current_user # to the given model names that are already set as instance variables in a # prior before_filter. # # Example: # # track_changes :post # track_changes :post, :post_attribute # # Currently does not work if the instance variable is anything except # an model that has current_user accessors. def track_changes models, *args models_to_track = [] models_to_track << models if args.kind_of?(Array) models_to_track << args end models_to_track.flatten! define_method(:__track_changes_to_models) { models_to_track } self.class_eval do helper :audits before_filter TrackChanges::CurrentUserFilter end end end end ActionController::Base.extend TrackChanges::ActionController