0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
State machines for Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.6
>= 0
>= 0
>= 0

Runtime

 Project Readme

HuwahuwaState - Ruby simple state machines

Build Status

using ActiveRecord::Enum.

Installation

Add this line to your application's Gemfile:

gem 'huwahuwa_state'

And then execute:

$ bundle

Requirements

  • "activerecord", ">= 4.1"

Example

class User < ActiveRecord::Base
  enum state: [:state_active, :state_freeze, :state_rock, :state_pending]
  huwahuwa_state column_name: :state
  
  huwahuwa_state :state_active, from: [:state_pending, :state_freeze, :state_pending] do |record|
    # something
    record.state_active!
    # something
  end

  huwahuwa_state :state_rock, from: [:state_active] do |record|
    record.state_rock!
  end
end
# success
user = User.create(state: User.states["state_pending"])
user.can_state_active? # => true
user.update_state!(:state_active)
user.state # => 'state_active'

# failure
user = User.create(state: User.states["state_freeze"])
user.can_state_rock? # => false
user.update_state!(:state_rock) # => HuwahuwaState::NotAcceptedUpdate

Contributing

  1. Fork it ( https://github.com/[my-github-username]/huwahuwa_state/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request