Module: Auditrail::ClassMethods

Defined in:
lib/auditrail.rb

Defined Under Namespace

Classes: AuditOptions

Instance Method Summary collapse

Instance Method Details

#auditable(&block) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/auditrail.rb', line 38

def auditable(&block)
  audit_options = block ? AuditOptions.new(&block) : AuditOptions.new

  class_eval do
    before_create do
      track_changes(:creating, audit_options.user) if attributes_changed?(*audit_options.attributes)
    end

    before_update do
      track_changes(:updating, audit_options.user) if attributes_changed?(*audit_options.attributes)
    end

    after_save do
      save_tracked_changes if attributes_changed?(*audit_options.attributes)
    end
  end

end