Class: Audited::Adapters::MongoMapper::Audit

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Observing, Audited::Audit, MongoMapper::Document
Defined in:
lib/audited/adapters/mongo_mapper/audit.rb

Overview

Audit saves the changes to ActiveRecord models. It has the following attributes:

  • auditable: the ActiveRecord model that was changed

  • user: the user that performed the change; a string or an ActiveRecord model

  • action: one of create, update, or delete

  • audited_changes: a serialized hash of all the changes

  • comment: a comment set with the audit

  • created_at: Time that the change was performed

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.acendingObject



39
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 39

def self.acending;   sort(:version.asc); end

.ascendingObject



40
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 40

def self.ascending;  sort(:version.asc); end

.createsObject



42
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 42

def self.creates;    where(:action => 'create'); end

.descendingObject



41
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 41

def self.descending; sort(:version.desc); end

.destroysObject



44
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 44

def self.destroys;   where(:action => 'destroy'); end

.from_version(version) ⇒ Object



47
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 47

def self.from_version(version);  where(:version.gte => version); end

.sanitize_for_time_with_zone(value) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 53

def sanitize_for_time_with_zone(value)
  case value
  when Hash
    value.inject({}){|h,(k,v)| h[k] = sanitize_for_time_with_zone(v); h }
  when Array
    value.map{|v| sanitize_for_time_with_zone(v) }
  when ActiveSupport::TimeWithZone
    value.utc
  else
    value
  end
end

.to_version(version) ⇒ Object



48
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 48

def self.to_version(version);    where(:version.lte => version); end

.up_until(date_or_time) ⇒ Object



46
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 46

def self.up_until(date_or_time); where(:created_at.lte => date_or_time); end

.updatesObject



43
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 43

def self.updates;    where(:action => 'update'); end

Instance Method Details

#ancestorsObject

Return all audits older than the current one.



91
92
93
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 91

def ancestors
  self.class.where(:auditable_id => auditable_id, :auditable_type => auditable_type, :version.lte => version)
end

#audited_changes=(value) ⇒ Object



67
68
69
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 67

def audited_changes=(value)
  self[:audited_changes] = self.class.sanitize_for_time_with_zone(value)
end

#set_created_atObject



95
96
97
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 95

def set_created_at
  self[:created_at] = Time.now.utc if !persisted? && !created_at?
end

#user_as_stringObject Also known as: user



84
85
86
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 84

def user_as_string
  self.user_as_model || self.username
end

#user_as_string=(user) ⇒ Object Also known as: user=

Allows user to be set to either a string or an ActiveRecord object



73
74
75
76
77
78
79
# File 'lib/audited/adapters/mongo_mapper/audit.rb', line 73

def user_as_string=(user)
  # reset both either way
  self.user_as_model = self.username = nil
  user.is_a?(::MongoMapper::Document) ?
    self.user_as_model = user :
    self.username = user
end