Module: Acts::As::Multiple::StateMachines::ActMacro

Defined in:
lib/acts/as/multiple/state_machines/active_record_extension.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods

Instance Method Summary collapse

Instance Method Details

#acts_as_state_machine(options = {}, &block) ⇒ Object

Configuration options are

  • column - specifies the column name to use for keeping the state (default: state)

  • initial - specifies an initial state for newly created objects (required)



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/acts/as/multiple/state_machines/active_record_extension.rb', line 14

def acts_as_state_machine(options = {}, &block)
  class_eval do
    extend ClassMethods
    include InstanceMethods
  
    # make sure only does it once...
    unless respond_to?(:state_machine_classes)
      write_inheritable_attribute :state_machine_classes, {}
      class_inheritable_reader    :state_machine_classes
      before_create               :set_initial_state
      after_create                :run_initial_state_actions
    end
  
    name = options.delete(:name) || 'default'
    name = name.to_sym

    raise DuplicateStateMachine unless state_machine_classes[name].nil?
    state_machine_classes[name] = SupportingClasses::StateMachineFactory.build(name, self, options, &block)
  end

end