Module: Workflow::Join::ActiveRecord::PendingTransitions

Included in:
Workflow::Join::ActiveRecord
Defined in:
lib/workflow/join/active_record/pending_transitions.rb

Overview

table.column :workflow_pending_transitions, :string

Instance Method Summary collapse

Instance Method Details

#pending_transition!(value) ⇒ Object



22
23
24
# File 'lib/workflow/join/active_record/pending_transitions.rb', line 22

def pending_transition!(value)
  pending_transitions!(pending_transitions | [value])
end

#pending_transitionsObject



6
7
8
# File 'lib/workflow/join/active_record/pending_transitions.rb', line 6

def pending_transitions
  workflow_pending_transitions.to_s.split(',').map(&:to_sym)
end

#pending_transitions!(value) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/workflow/join/active_record/pending_transitions.rb', line 10

def pending_transitions!(value)
  pts = case value
        when Array then value.map(&:to_s).join(',')
        when String, Symbol then value.to_s
        end
  update_column :workflow_pending_transitions, pts
end

#pending_transitions?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/workflow/join/active_record/pending_transitions.rb', line 18

def pending_transitions?
  !pending_transitions.empty?
end

#try_pending_transitions!Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/workflow/join/active_record/pending_transitions.rb', line 26

def try_pending_transitions!
  pending_transitions!(pending_transitions.reject do |transition|
    begin
      respond_to?("can_#{transition}?") && \
        public_send("can_#{transition}?") && \
        public_send("#{transition}!".to_sym) && \
        true
    rescue
      false # no transition no cry
    end
  end)
end