Guest User

Untitled

a guest
May 20th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. # Testing the aasm gem to see how to get one aasm_event to decide
  3. # which state to transition into
  4. require 'rubygems'
  5. require 'aasm'
  6. class TestObject
  7. include AASM
  8.  
  9. aasm_initial_state :active
  10.  
  11. aasm_state :active, :enter => :make_active
  12. aasm_state :sold, :enter => :make_sold
  13. aasm_state :unsold, :enter => :make_unsold
  14.  
  15. aasm_event :finish do
  16. transitions :to => :sold, :from => [:active], :guard => Proc.new {|a| a.reserve < a.price}
  17. transitions :to => :unsold, :from => [:active]
  18. end
  19.  
  20. attr_accessor :price, :reserve, :name
  21.  
  22. def initialize(name, price,reserve)
  23. @name = name
  24. @price = price
  25. @reserve = reserve
  26. end
  27. private
  28. def make_active
  29. puts "#{name} is now active!"
  30. end
  31. def make_sold
  32. puts "#{name} is now sold!"
  33. end
  34. def make_unsold
  35. puts "#{name} is now unsold!"
  36. end
  37. end
  38.  
  39. sells = TestObject.new('sell',100,50)
  40. sells.finish
  41.  
  42. nosell = TestObject.new('nosell',50,100)
  43. nosell.finish
Add Comment
Please, Sign In to add comment