Máquina de Estados en Ruby on Rails con AASM

La gema AASM sirve para agregar una máquina de estados a clases de Ruby.

Los vamos a utilizar en un modelo.

Nuestro modelo tiene una columna llamada state de tipo string

 

Añadimos la gema de AASM en el GemFile

Instalamos

 

Añadimos en nuestro modelo Article el modulo de AASM que ofrece la gema y  nuestra maquina de estados

En este ejemplo tenemos 2 estados declarados, in_draft (borrador) y published (publicado).

El estado inicial en el que inicia nuestra columna es el de in_draft (todos los artículos que creemos se crearan como draft por defecto)

Las transiciones entre estados con AASM se hacen mediante eventos, en este caso publish y unpublish

  • El evento publish pasa del estado in_draft al estado published.
  • El evento unpublish pasa del estado published al estado in_draft.

 

Ahora desde consola hacemos las pruebas con metodos que nos proporciona la gema AASM: