workflow_on_mongoid lets you use the Workflow gem with your Mongoid documents to add state machine functionality.
In your Gemfile, instead of
gem 'workflow'
do
gem 'workflow_on_mongoid'
That is all. Now you can use Workflow with your Mongoid documents. Of course, you can still continue to use Workflow with ActiveRecord, Remodel and plain objects. All that workflow_on_mongoid does is to add Mongoid support. You can use all the features of Workflow with Mongoid models, including reflection of events & states, transition hooks, support for inherited models, etc. Just refer to the Workflow docs.
The version numbers of workflow_on_mongoid track the latest supported version of Workflow . The major version number (x.x.x) matches the latest supported version of the Workflow gem, while the minor version number (0.7.0.x) tracks changes to workflow_on_mongoid itself.
The current version is 0.8.0.3 .
NOTE: workflow_on_mongoid 0.8.0 uses Mongoid 2.0.0.beta.20 . 0.8.0.1+ uses the latest Mongoid 2.0.0.rc . Please choose the appropriate version of workflow_on_mongoid based on the version of Mongoid you are using (the changes from Mongoid 2.0.0.beta to 2.0.0.rc are significant!)
class MongoidImage include Mongoid::Document field :title field :status include Workflow workflow_column :status workflow do state :unconverted do event :convert, :transitions_to => :converted end state :converted end end
See the tests for Mongoid for more examples.
I’ve included all the tests from the original workflow gem and added comprehensive tests for Mongoid support, which is now as well-tested as ActiveRecord support. Including the existing tests ensures that workflow_on_mongoid implements support for Mongoid documents without breaking anything.
workflow_on_mongoid is hosted on Github: github.com/bowsersenior/workflow_on_mongoid . It’s a tiny project, but your contributions, forkings, comments and feedback are definitely appreciated.
Special thanks to:
-
Guilherme Cirne (github.com/gcirne)
-
Dariusz Gertych (github.com/chytreg)
Copyright © 2011 Mani Tadayon, released under the MIT License