class StateMachines::AuditTrail::Backend::ActiveRecord

Public Class Methods

new(transition_class, owner_class, options = {}) click to toggle source
Calls superclass method
# File lib/state_machines/audit_trail/backend/active_record.rb, line 4
def initialize(transition_class, owner_class, options = {})
  super
  @association = transition_class.to_s.tableize.split('/').last.to_sym
  assoc_options = {class_name: transition_class.to_s}.merge(options.slice(:as))
  owner_class.has_many(@association, **assoc_options) unless owner_class.reflect_on_association(@association)
end

Public Instance Methods

persist(object, fields) click to toggle source
# File lib/state_machines/audit_trail/backend/active_record.rb, line 11
def persist(object, fields)
  # Let ActiveRecord manage the timestamp for us so it does the right thing with regards to timezones.
  if object.new_record?
    object.send(@association).build(fields)
  else
    object.send(@association).create(fields)
  end

  nil
end