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

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

Instance Method Summary collapse

Instance Method Details

#calculate_in_state(state_machine_name, state, *args) ⇒ Object



53
54
55
56
57
# File 'lib/acts/as/multiple/state_machines/active_record_extension.rb', line 53

def calculate_in_state(state_machine_name, state, *args)
  with_state_scope state_machine_name, state do
    calculate(*args)
  end
end

#count_in_state(state_machine_name, state, *args) ⇒ Object



47
48
49
50
51
# File 'lib/acts/as/multiple/state_machines/active_record_extension.rb', line 47

def count_in_state(state_machine_name, state, *args)
  with_state_scope state_machine_name, state do
    count(*args)
  end
end

#find_in_state(state_machine_name, number, state, *args) ⇒ Object



41
42
43
44
45
# File 'lib/acts/as/multiple/state_machines/active_record_extension.rb', line 41

def find_in_state(state_machine_name, number, state, *args)
  with_state_scope state_machine_name, state do
    find(number, *args)
  end
end

#state_machinesObject



37
38
39
# File 'lib/acts/as/multiple/state_machines/active_record_extension.rb', line 37

def state_machines
  read_inheritable_attribute :state_machine_classes
end

#with_state_scope(state_machine_name, state) ⇒ Object

Raises:



59
60
61
62
63
64
65
66
# File 'lib/acts/as/multiple/state_machines/active_record_extension.rb', line 59

def with_state_scope(state_machine_name, state)
  sm = state_machine_classes[state_machine_name.to_sym]
  raise InvalidState unless sm.states.include?(state.to_sym)

  with_scope :find => {:conditions => ["#{table_name}.#{sm.state_column} = ?", state.to_s]} do
    yield if block_given?
  end
end