saberma / transitions

State machine extracted from ActiveModel

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

transitions

The gem is based on Rick Olson’s code of ActiveModel::StateMachine, axed from ActiveModel in this commit.

Installation

If you’re using Rails + ActiveRecord + Bundler

# in your Gemfile
gem "transitions", :require => ["transitions", "active_record/transitions"]

# in your AR models that will use the state machine
include ::Transitions
include ActiveRecord::Transitions

state_machine do
  state :available # first one is initial state
  state :out_of_stock
  state :discontinue

  event :discontinue do
    transitions :to => :discontinue, :from => [:available, :out_of_stock], :on_transition => :do_discontinue
  end
  event :out_of_stock do
    transitions :to => :out_of_stock, :from => [:available, :discontinue]
  end
  event :available do
    transitions :to => :available, :from => [:out_of_stock], :on_transition => :send_alerts
  end
end

Copyright © 2010 Jakub Kuźma. See LICENSE for details.

About

State machine extracted from ActiveModel

License:MIT License


Languages

Language:Ruby 100.0%