The finite state machine implementations for Elixir.
- The package can be installed by adding
aasm
to your list of dependencies inmix.exs
:
def deps do
[
{:aasm, "~> 0.2.0"}
]
end
defmodule Dummy.Order do
@moduledoc """
Order model
"""
use Ecto.Schema
import AASM
aasm :state do
state(~w(state_created state_assigned state_finished state_closed)a)
event(:handle_assigned, %{from: ~w(state_created)a, to: :state_assigned}, fn changeset ->
changeset
end)
event(:handle_finished, %{from: ~w(state_assigned)a, to: :state_finished}, fn changeset ->
changeset
end)
event(
:handle_closed,
%{from: ~w(state_created state_assigned state_finished)a, to: :state_closed},
fn changeset -> changeset end
)
end
schema "orders" do
field(:state, :string)
end
end
- Support multi db column.
- Add before_event.
- Initial value
Bug report or pull request are welcome.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Please write unit test with your code if necessary.
The gem is available as open source under the terms of the MIT License.
- aasm - State machines for Ruby classes.
- ecto_state_machine - Other state machine for elixir.