Module: StateMachine::AuditTrail::TransitionAuditing
- Defined in:
- lib/state_machine/audit_trail/transition_auditing.rb
Overview
this class inserts the appropriate hooks into the state machine. it also contains functions to instantiate an object of the “transition_class” the transition_class is the class for the model which holds the audit_trail
Instance Attribute Summary collapse
-
#transition_class_name ⇒ Object
Returns the value of attribute transition_class_name.
Instance Method Summary collapse
-
#audit_trail(context_to_log = nil) ⇒ Object
Public returns an instance of the class which does the actual audit trail logging.
-
#store_audit_trail(options = {}) ⇒ Object
Public tells the state machine to hook in the appropriate before / after behaviour.
Instance Attribute Details
#transition_class_name ⇒ Object
Returns the value of attribute transition_class_name.
6 7 8 |
# File 'lib/state_machine/audit_trail/transition_auditing.rb', line 6 def transition_class_name @transition_class_name end |
Instance Method Details
#audit_trail(context_to_log = nil) ⇒ Object
Public returns an instance of the class which does the actual audit trail logging
27 28 29 |
# File 'lib/state_machine/audit_trail/transition_auditing.rb', line 27 def audit_trail(context_to_log = nil) @transition_auditor ||= StateMachine::AuditTrail::Backend.create_for_transition_class(transition_class, self.owner_class, context_to_log) end |
#store_audit_trail(options = {}) ⇒ Object
Public tells the state machine to hook in the appropriate before / after behaviour
options: a Hash of options. keys that are used are :to => CustomTransitionClass,
:context_to_log => method(s) to call on object and store in transitions
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/state_machine/audit_trail/transition_auditing.rb', line 12 def store_audit_trail( = {}) state_machine = self state_machine.transition_class_name = ([:to] || default_transition_class_name).to_s state_machine.after_transition do |object, transition| state_machine.audit_trail([:context_to_log]).log(object, transition.event, transition.from, transition.to) end state_machine.owner_class.after_create do |object| if !object.send(state_machine.attribute).nil? state_machine.audit_trail([:context_to_log]).log(object, nil, nil, object.send(state_machine.attribute)) end end end |