Archive for the Uncategorized Category

Hace unos días publiqué un post sobre el plugin acts_as_state_machine y desde aquella estuve buscando la manera de hacer las cosas un poquito más sencillas en el futuro. Uno de los objetivos que perseguimos en el proyecto que en el que estoy trabajando es dejar abierta la posibilidad de modificar o crear nuevas maquinas de estados entre los diferentes grupos que puedan surgir dentro de la empresa y que las incidencias circulen a modo de hot patato. Para ello vamos apoyarnos en que ruby deja las clases abiertas :) y así podemos meterle mano dura :P

Lo primero que tenemos que hacer es definir una serie de áreas o conjuntos de grupos para definir los estados:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Tracker << ActiveRecord::Base
  acts_as_state_machine :initial => Group.initial_for_loaded_area
 
  Group.all_groups.each() { |grp|
    state grp.state_name
  }
 
  Event.all.each() { |e|
    event e.name.to_sym do
      e.group_transitions.each() { |gt|
        transitions :from => gt.from, :to => gt.to
      }
   }
end

Ahora toca refinarlo un bastante, pero la idea básica es esa.
Saludos!!