🤔 Situation
When you use aasm gem in your project, and it's grown. You might want to refactor it. There is a tip, I will write it later.
# 32 lines
include AASM
aasm column: :status do
state :a , initial: true
state :b
state :c
state :d
state :e
state :f
state :g
state :h
event :b do
transitions from: :a, to: :b
end
event :c do
transitions from: :b, to: :c
end
event :d do
transitions from: :b, to: :d
end
event :e do
transitions from: :d, to: :e
end
event :f do
transitions from: :e, to: :f
end
event :g do
transitions from: :e, to: :g
end
end
🦄 Before the refactoring, Understanding
The curry braces is stronger(prior) than the do-end block.
Then, if you want the arguments stronger than {}
, you need ()
for the arguments.
So, following it equal.
event :happen do
transitions from: :sleep, to: :wakeup
end
event(:happen){transitions from: :sleep, to: :wakeup }
👍 Reduce the lines
It is better foresight.
# 18 lies
include AASM
aasm column: :status do
state :a , initial: true
state :b
state :c
state :d
state :e
state :f
state :g
state :h
event(:b) {transitions from: :a, to: :b }
event(:c) {transitions from: :b, to: :c }
event(:d) {transitions from: :b, to: :d }
event(:e) {transitions from: :d, to: :e }
event(:f) {transitions from: :e, to: :f }
event(:g) {transitions from: :e, to: :g }
end
Top comments (0)