Class: Mongoid::AuditLog::Entry
- Inherits:
-
Object
- Object
- Mongoid::AuditLog::Entry
show all
- Includes:
- Document, Timestamps::Created
- Defined in:
- lib/mongoid/audit_log/entry.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
102
103
104
105
106
107
108
109
110
|
# File 'lib/mongoid/audit_log/entry.rb', line 102
def method_missing(sym, *args, &block)
key = sym.to_s
if model_attributes.present? && model_attributes.has_key?(key)
model_attributes[key]
else
super
end
end
|
Instance Method Details
#audited ⇒ Object
65
66
67
68
69
70
71
72
73
|
# File 'lib/mongoid/audit_log/entry.rb', line 65
def audited
return nil if audited_type.blank? || audited_id.blank?
if for_embedded_doc?
lookup_from_document_path
else
audited_type.constantize.where(id: audited_id).first
end
end
|
#for_embedded_doc? ⇒ Boolean
61
62
63
|
# File 'lib/mongoid/audit_log/entry.rb', line 61
def for_embedded_doc?
document_path.try(:length).to_i > 1
end
|
#modifier ⇒ Object
42
43
44
45
46
47
48
49
|
# File 'lib/mongoid/audit_log/entry.rb', line 42
def modifier
@modifier ||= if modifier_id.blank?
nil
else
klass = Mongoid::AuditLog.modifier_class_name.constantize
klass.find(modifier_id) rescue nil
end
end
|
#modifier=(modifier) ⇒ Object
51
52
53
54
55
56
57
58
59
|
# File 'lib/mongoid/audit_log/entry.rb', line 51
def modifier=(modifier)
self.modifier_id = if modifier.present? && modifier.respond_to?(:id)
modifier.id
else
modifier
end
@modifier = modifier
end
|
#respond_to?(sym, *args) ⇒ Boolean
97
98
99
100
|
# File 'lib/mongoid/audit_log/entry.rb', line 97
def respond_to?(sym, *args)
key = sym.to_s
(model_attributes.present? && model_attributes.has_key?(key)) || super
end
|
#restorable? ⇒ Boolean
93
94
95
|
# File 'lib/mongoid/audit_log/entry.rb', line 93
def restorable?
destroy? && !restored? && Restore.new(self).valid?
end
|
#restore! ⇒ Object
86
87
88
89
90
91
|
# File 'lib/mongoid/audit_log/entry.rb', line 86
def restore!
raise Restore::InvalidRestore if restored? || !destroy?
Restore.new(self).perform
update_attributes!(:restored => true)
end
|
#root ⇒ Object
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/mongoid/audit_log/entry.rb', line 75
def root
root = document_path.first
return audited if root.blank?
if for_embedded_doc?
root['class_name'].constantize.where(id: root['id']).first
else
audited
end
end
|
#valid? ⇒ Boolean
34
35
36
37
38
39
40
|
# File 'lib/mongoid/audit_log/entry.rb', line 34
def valid?(*)
result = super
if result && modifier.blank?
self.modifier = Mongoid::AuditLog.current_modifier
end
result
end
|