From e4dae8e58d3d975baed0eec91f5d217e0f8f1bb1 Mon Sep 17 00:00:00 2001 From: Vladimir Meremyanin Date: Tue, 26 Mar 2013 08:56:15 +0400 Subject: [PATCH] improved guards example in readme --- README.md | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 33dc34ba..a54237b5 100644 --- a/README.md +++ b/README.md @@ -151,41 +151,37 @@ running the transition. If the guard returns `false` the transition will be denied (raising `AASM::InvalidTransition` or returning `false` itself): ```ruby -class Job +class Cleaner include AASM aasm do - state :sleeping, :initial => true - state :running + state :idle, :initial => true state :cleaning - event :run do - transitions :from => :sleeping, :to => :running - end - event :clean do - transitions :from => :running, :to => :cleaning + transitions :from => :idle, :to => :cleaning, :guard => :cleaning_needed? end - event :sleep do - transitions :from => :running, :to => :sleeping, :guard => :cleaning_needed? do + event :clean_if_needed do + transitions :from => :idle, :to => :cleaning do guard do - and_cleaning_possible? + cleaning_needed? end end + transitions :from => :idle, :to => :idle end end def cleaning_needed? false end - end -job = Job.new -job.run -job.may_sleep? # => false -job.sleep # => raises AASM::InvalidTransition +job = Cleaner.new +job.may_clean? # => false +job.sleep # => raises AASM::InvalidTransition +job.may_clean_if_needed? # => true +job.clean_if_needed! # idle ```