# Rails Admin State Machine Master repository has moved to gitlab, all new code will be there: https://gitlab.com/rocket-science/rails_admin_state ### Properly manage [state_machines](https://github.com/state-machines/state_machines) states from rails_admin Allows easily sending state_machine events to a model from Rails Admin, including support for ActiveRecord \ Mongoid and custom state field name and multiple state machines per model. ## Screenshot ![Rails Admin State Machine](http://rscx.ru/state.png) ## Installing Add this line to your application's Gemfile: gem 'rails_admin_state' And then execute: $ bundle Or install it yourself as: $ gem install rails_admin_state ## Usage Add the state action: RailsAdmin.config do |config| config.actions do ...... state end end Mark the field you need display as state: rails_admin do list do field :state, :state ... end edit do field :state, :state ... end ... end ### States and event button/label custom classes: rails_admin do list do field :state, :state ... end ... state({ events: {dead: 'btn-danger', drain: 'btn-warning', alive: 'btn-success'}, states: {dead: 'label-important', drain: 'label-warning', alive: 'label-success'} disable: [:dead] # disable some events so they are not shown. }) end Some classes are preset by default (published, deleted, etc) ### CanCan integration cannot :manage, Recipes::Recipe can :read, Recipes::Recipe can :state, Recipes::Recipe # required to do any transitions can :all_events, Recipes::Recipe ### i18n (state and event names): Just as usual for state_machine, see: http://rdoc.info/github/pluginaweek/state_machine/master/StateMachine/Integrations/Mongoid http://rdoc.info/github/pluginaweek/state_machine/master/StateMachine/Integrations/ActiveRecord For namespaced models use "/", just as usual: "Blog::Post" is "blog/post" State name set this way is also used in .human_state_name, error messages, etc ## Contributing 1. Fork it 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 new Pull Request