Skip to content

Instantly share code, notes, and snippets.

@wpeterson
Created October 18, 2010 00:22
Show Gist options
  • Save wpeterson/631493 to your computer and use it in GitHub Desktop.
Save wpeterson/631493 to your computer and use it in GitHub Desktop.
Here's Bob's Coding Challenge
state_machine :state, :initial => :applied do
before_transition(any => :applied) {|r, t| r.applied_at = Time.now }
before_transition(any => :screened) {|r, t| r.screened_at = Time.now }
before_transition(any => :interview) {|r, t| r.interview_at = Time.now }
before_transition(any => :rejected) {|r, t| r.rejected_at = Time.now }
before_transition(any => :hired) {|r, t| r.hired_at = Time.now }
before_transition(any => :disabled) {|r, t| r.disabled_at = Time.now }
after_transition(any => :hired) {|r, t| r.update_attribute(:kind, 'Employee')}
event(:phone_screen) { transition :applied => :screened }
event(:challenge_code) { transition :screened => :needs_exercise }
event(:approve_exercise) { transition :needs_exercise => :interview }
event(:interview) { transition all-[:hired,:interview] => :interview }
event(:hire) { transition :interview => :hired }
event(:reject) { transition all-[:hired] => :rejected }
event(:disable) { transition :hired => :disabled }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment