Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Persisting the state column on transition using rubyist-aasm (acts as state machine)

What is the best way to persist the object's state to the database on a transition using aasm? I had thought that this would happen automatically but this doesn't seem to be the case.

(Edit: when I manually save the object, the state column does get updated. But a save isn't done on transitions.)

I can't find much useful documentation for this plugin, so if you have a suggestion for an alternative finite state machine implementation with better documentation, that might help as well.

like image 831
Angela Avatar asked Mar 25 '09 18:03

Angela


1 Answers

If you call the bang! form of the transition event method, the state will persist. For example, say you have an object with the following event:

class Book < ActiveRecord::Base
  # ... 

  aasm_event :close do
    transitions :to => :closed, :from => [:opened]
  end

  # ...
end

Calling book.close will set the state to closed, but will not automatically save. Calling book.close! will set the state *and* automatically save the AR object.

like image 92
Ryan McGeary Avatar answered Oct 16 '22 03:10

Ryan McGeary