Skip to content

Instantly share code, notes, and snippets.

@lucatironi
Created November 4, 2011 16:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucatironi/1339779 to your computer and use it in GitHub Desktop.
Save lucatironi/1339779 to your computer and use it in GitHub Desktop.
state_machine
# GemFile
gem 'state_machine'
# offerta.rb
scope :nuove, Offerta.where(:stato => "nuova")
STATI = %w(nuova inviata accettata rifiutata scaduta annullata)
state_machine :stato, :initial => :nuova do
before_transition any => :inviata do |offerta, transition|
offerta.inviata_il = Time.zone.now
end
event :invia do
transition :nuova => :inviata
end
event :accetta do
transition [:nuova, :inviata] => :accettata
end
event :rifiuta do
transition [:nuova, :inviata] => :rifiutata
end
event :scadi do
transition [:nuova, :inviata] => :scaduta
end
event :annulla do
transition any => :annullata
end
end
@lucatironi
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment