Skip to content

Instantly share code, notes, and snippets.

@kivanio
Forked from rummelonp/yokkyu.rb
Created June 23, 2014 00:37
Show Gist options
  • Save kivanio/f7a7326c2dbe4942beb6 to your computer and use it in GitHub Desktop.
Save kivanio/f7a7326c2dbe4942beb6 to your computer and use it in GitHub Desktop.
class Yokkyu < ActiveRecord::Base
extend Enumerize
enumerize :status, scope: true, default: :awaiting in: {
awaiting: 1,
approved: 2,
rejected: 3,
}
state_machine :status do
state :awaiting
state :approved
state :rejected
before_transition any => :approve, do: :set_approved_at
before_transition any => :rejected, do: :set_rejected_at
event :approve do
transition to: :approved, from: [:awaiting]
end
event :reject do
transition to: :rejected, from: [:awaiting, :approved]
end
end
def change_status(event)
event = event.to_sym
if event.in?(status_events)
send(event)
else
errors.add(:status, :invalid_transition)
false
end
end
private
def set_approved_at
self.approved_at = Time.now
end
def set_rejected_at
self.rejected_at = Time.now
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment