module PersistentEnum::ActsAsEnum

Constants

LOCK

Public Class Methods

register_acts_as_enum(clazz) click to toggle source
# File lib/persistent_enum/acts_as_enum.rb, line 197
def register_acts_as_enum(clazz)
  LOCK.synchronize do
    @@known_enumerations[clazz.name] = clazz
  end
end
reinitialize_enumerations() click to toggle source

Reload enumerations from the database: useful if the database contents may have changed (e.g. fixture loading).

# File lib/persistent_enum/acts_as_enum.rb, line 205
def reinitialize_enumerations
  LOCK.synchronize do
    @@known_enumerations.each_value do |clazz|
      clazz.reinitialize_acts_as_enum
    end
  end
end
rerequire_known_enumerations() click to toggle source

Ensure that all known_enumerations are loaded by resolving each name constant and reregistering the resulting class. Raises NameError if a previously-encountered type cannot be resolved.

# File lib/persistent_enum/acts_as_enum.rb, line 216
def rerequire_known_enumerations
  LOCK.synchronize do
    @@known_enumerations.keys.each do |name|
      new_clazz = name.safe_constantize
      unless new_clazz.is_a?(Class)
        raise NameError.new("Could not resolve ActsAsEnum type '#{name}' after reload")
      end

      register_acts_as_enum(new_clazz)
    end
  end
end

Public Instance Methods

active?() click to toggle source

Is this enum member still present in the enum declaration?

# File lib/persistent_enum/acts_as_enum.rb, line 189
def active?
  self.class.active?(self)
end
enum_constant() click to toggle source
# File lib/persistent_enum/acts_as_enum.rb, line 176
def enum_constant
  read_attribute(self.class.name_attr)
end
ordinal() click to toggle source
# File lib/persistent_enum/acts_as_enum.rb, line 184
def ordinal
  read_attribute(:id)
end
readonly?() click to toggle source

Enum values should not be mutable: allow creation and modification only before the state has been initialized.

# File lib/persistent_enum/acts_as_enum.rb, line 172
def readonly?
  !self.class._acts_as_enum_state.nil?
end
to_sym() click to toggle source
# File lib/persistent_enum/acts_as_enum.rb, line 180
def to_sym
  enum_constant.to_sym
end