Module: Statelogic::ActiveRecord::ClassMethods

Defined in:
lib/statelogic/activerecord.rb

Defined Under Namespace

Classes: ConfigHelper, StateScopeHelper

Constant Summary collapse

DEFAULT_OPTIONS =
{:attribute => :state}.freeze

Instance Method Summary collapse

Instance Method Details

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



67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/statelogic/activerecord.rb', line 67

def statelogic(options = {}, &block)
  options = DEFAULT_OPTIONS.merge(options)
  attr = options[:attribute] = options[:attribute].to_sym

  options[:states], options[:initial] = [], Array(options[:initial])

  ConfigHelper.new(self, options).instance_eval(&block)

  initial = options[:initial] || options[:states]
  validates_inclusion_of attr, :in => initial, :on => :create unless initial.blank?

  const = attr.to_s.pluralize.upcase
  const_set(const, options[:states].freeze.each(&:freeze)) unless const_defined?(const)
end