Class: Statelogic::ActiveRecord::ClassMethods::ConfigHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/statelogic/activerecord.rb

Instance Method Summary collapse

Constructor Details

#initialize(cl, config) ⇒ ConfigHelper

Returns a new instance of ConfigHelper.



43
44
45
# File 'lib/statelogic/activerecord.rb', line 43

def initialize(cl, config)
  @class, @config = cl, config
end

Instance Method Details

#initial_state(name, options = {}, &block) ⇒ Object



47
48
49
# File 'lib/statelogic/activerecord.rb', line 47

def initial_state(name, options = {}, &block)
  state(name, options.update(:initial => true), &block)
end

#state(name, options = {}, &block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/statelogic/activerecord.rb', line 51

def state(name, options = {}, &block)
  attr = @config[:attribute]
  attr_was = :"#{attr}_was"
  @class.class_eval do
    define_method("#{name}?") { send(attr) == name }
    define_method("was_#{name}?") { send(attr_was) == name }
  end

  StateScopeHelper.new(@class, name, @config).instance_eval(&block)

  @config[:states] << name
  @config[:initial] << name if options[:initial]
end