Class: SimpleTransitions::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_transitions/definition.rb

Instance Method Summary collapse

Constructor Details

#initialize(model, column, &block) ⇒ Definition

Returns a new instance of Definition.



4
5
6
7
8
# File 'lib/simple_transitions/definition.rb', line 4

def initialize(model, column, &block)
  @model  = model
  @column = column
  instance_eval(&block)
end

Instance Method Details

#transition(transition_name, options) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/simple_transitions/definition.rb', line 10

def transition(transition_name, options)
  from, to        = options.values_at(:from, :to)
  callback        = options[:callback]
  writer_method   = "_#{transition_name}="
  column          = @column

  [from].flatten.each do |from_state|
    @model.available_transitions[from_state] << "_#{transition_name}"
  end

  # define a writer method so an appropriately named submit button can trigger the transition
  @model.send(:define_method, writer_method) do |unused_value|
    new_state = to.respond_to?(:call) ? to.call(self) : to
    self.send("#{column}=", new_state)
    self.current_transition = transition_name
  end
end