Class: ClosedLoop::Machine::Transition
- Inherits:
-
Base
- Object
- Base
- ClosedLoop::Machine::Transition
show all
- Defined in:
- lib/closed_loop/machine/transition.rb
Constant Summary
Constants inherited
from Base
Base::ATTRIBUTES
Instance Method Summary
collapse
Methods inherited from Base
#initialize
Instance Method Details
#available?(target, user) ⇒ Boolean
8
9
10
11
12
|
# File 'lib/closed_loop/machine/transition.rb', line 8
def available?(target, user)
Array(role).include?(machine.resolve_role(target, user)) &&
Array(from).include?(target.status.to_sym) &&
none_constraints?(target, user)
end
|
#none_constraints?(target, user) ⇒ Boolean
14
15
16
17
18
|
# File 'lib/closed_loop/machine/transition.rb', line 14
def none_constraints?(target, user)
machine.configuration.select_constraints_for(self).all? do |constraint|
constraint.allows?(target, user, transition: self)
end
end
|
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/closed_loop/machine/transition.rb', line 41
def perform(target, user, attributes)
target.class.transaction do
target.assign_attributes(attributes)
target.status = to
target.last_transition_at = Time.current if target.respond_to?(:last_transition_at)
if target.save
proc&.call(target, user, transition: self)
machine.configuration.select_callbacks_for(self).each do |callback|
callback.perform!(target, user, transition: self)
end
yield(target, user, transition: self) if block_given?
end
end
@track_times_used = times_used + 1
end
|
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/closed_loop/machine/transition.rb', line 20
def perform!(target, user)
target.class.transaction do
target.status = to
target.last_transition_at = Time.current if target.respond_to?(:last_transition_at)
proc&.call(target, user, transition: self)
target.save!
machine.configuration.select_callbacks_for(self).each do |callback|
callback.perform!(target, user, transition: self)
end
raise 'Callback changes were not saved' if target.changed?
yield(target, user, transition: self) if block_given?
end
@track_times_used = times_used + 1
end
|
#times_used ⇒ Object
4
5
6
|
# File 'lib/closed_loop/machine/transition.rb', line 4
def times_used
@track_times_used ||= 0
end
|