Module: RailsMachine::ClassMethods

Defined in:
lib/rails_machine.rb

Instance Method Summary collapse

Instance Method Details

#rails_machine(column: :state, &blk) ⇒ Object

Raises:

  • (ArgumentError)


38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rails_machine.rb', line 38

def rails_machine(column: :state, &blk)
  raise ArgumentError, "rails_machine requires a configuration block" unless block_given?

  configuration = Configuration.new
  configuration.run(&blk)

  self.transitions = configuration.transitions.transform_values(&:freeze).freeze
  self.init_states = configuration.init_states.freeze
  enum column, configuration.states

  validates_presence_of column
end