module Auditable::Auditor::ClassMethods
Public Instance Methods
audit(opts = {})
click to toggle source
# File lib/auditable/auditor.rb, line 11 def audit(opts = {}) options = HashWithIndifferentAccess.new({ :attributes => [], :methods => [] }).merge(opts) add_auditable_actions(options[:methods]) add_auditable_attributes(options[:attributes]) has_many :audit_records, :as => :auditable include Auditor::InstanceMethods end
audited_attributes()
click to toggle source
# File lib/auditable/auditor.rb, line 20 def audited_attributes if self.base_class == self Array(@audited_attributes) else self.base_class.audited_attributes if @audited_attributes.nil? end end
Private Instance Methods
add_auditable_actions(optional_actions)
click to toggle source
# File lib/auditable/auditor.rb, line 36 def add_auditable_actions(optional_actions) [optional_actions].flatten.each do |a| ending = '' action = a.to_s if ['!','?'].any?{ |x| action.last == x } ending = action.slice!(/(.)$/) end send :define_method, "#{action}_with_action_audit#{ending}".to_sym do AuditRecord.create_for_action(self, a) self.send("#{action}_without_action_audit#{ending}") end alias_method_chain a, :action_audit end end
add_auditable_attributes(optional_attributes)
click to toggle source
# File lib/auditable/auditor.rb, line 28 def add_auditable_attributes(optional_attributes) @audited_attributes = [] [optional_attributes].flatten.each { |attribute| @audited_attributes << attribute.to_sym } unless @audited_attributes.empty? after_save :audit_changes end end