Class: StateMachine::AuditTrail::Backend::ActiveRecord

Inherits:
StateMachine::AuditTrail::Backend show all
Defined in:
lib/state_machine/audit_trail/backend/active_record.rb

Instance Attribute Summary collapse

Attributes inherited from StateMachine::AuditTrail::Backend

#owner_class, #transition_class

Instance Method Summary collapse

Methods inherited from StateMachine::AuditTrail::Backend

create_for_transition_class

Constructor Details

#initialize(transition_class, owner_class, context_to_log = nil) ⇒ ActiveRecord

Returns a new instance of ActiveRecord.



4
5
6
7
8
9
# File 'lib/state_machine/audit_trail/backend/active_record.rb', line 4

def initialize(transition_class, owner_class, context_to_log = nil)
  self.context_to_log = context_to_log
  @association = transition_class.to_s.tableize.to_sym
  super transition_class
  owner_class.has_many @association
end

Instance Attribute Details

#context_to_logObject

Returns the value of attribute context_to_log.



2
3
4
# File 'lib/state_machine/audit_trail/backend/active_record.rb', line 2

def context_to_log
  @context_to_log
end

Instance Method Details

#log(object, event, from, to, timestamp = Time.now) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/state_machine/audit_trail/backend/active_record.rb', line 11

def log(object, event, from, to, timestamp = Time.now)
  # Let ActiveRecord manage the timestamp for us so it does the 
  # right thing with regards to timezones.
  params = {:event => event, :from => from, :to => to}
  params[self.context_to_log] = object.send(self.context_to_log) unless self.context_to_log.nil?
  object.send(@association).create(params)
end