Class: ActiveRecord::Enum

Inherits:
Object show all
Extended by:
ActiveRecord::Enumerations::OptionsHelper
Defined in:
lib/ar_enums/enum.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ActiveRecord::Enumerations::OptionsHelper

add_option, extract_values_and_options

Constructor Details

#initialize(attrs = {}) ⇒ Enum

Returns a new instance of Enum.



8
9
10
11
12
# File 'lib/ar_enums/enum.rb', line 8

def initialize attrs = {}
  @id = attrs.delete(:id).to_i
  @name = attrs.delete(:name).to_s
  @extra_columns = attrs.reject { |k, _| [:enum_class, :on_style_not_matched].include?(k) }
end

Instance Attribute Details

#extra_columnsObject (readonly)

Returns the value of attribute extra_columns.



5
6
7
# File 'lib/ar_enums/enum.rb', line 5

def extra_columns
  @extra_columns
end

#idObject (readonly)

Returns the value of attribute id.



5
6
7
# File 'lib/ar_enums/enum.rb', line 5

def id
  @id
end

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/ar_enums/enum.rb', line 5

def name
  @name
end

Class Method Details

.[](name_or_id) ⇒ Object



43
44
45
# File 'lib/ar_enums/enum.rb', line 43

def self.[] name_or_id
  all.detect { |enum| enum == name_or_id }
end

.create_from(value, values, options) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/ar_enums/enum.rb', line 14

def self.create_from value, values, options
  required_attrs = case value
  when String, Symbol
    { :name => value }
  else
    value
  end
  required_attrs[:id] ||= values.index(value) + 1
  new options.merge(required_attrs)
end

.enumeration(*config, &block) ⇒ Object



38
39
40
41
# File 'lib/ar_enums/enum.rb', line 38

def self.enumeration *config, &block
  add_option config, :class_name => self
  define_enums_getter ActiveRecord::Enumerations::Factory.make_enums(*config, &block)
end

.find_all_by_id(ids, options = {}) ⇒ Object



47
48
49
# File 'lib/ar_enums/enum.rb', line 47

def self.find_all_by_id ids, options = {}
  all.select { |enum| ids.include? enum.id }
end

Instance Method Details

#==(other) ⇒ Object



25
26
27
28
# File 'lib/ar_enums/enum.rb', line 25

def == other
  return id == other.id if other.is_a?(Enum)
  [id.to_s, name].include?(other.to_s)
end

#in?(*enums) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/ar_enums/enum.rb', line 51

def in? *enums
  enums.any? { |e| self == e }
end

#to_sObject



30
31
32
# File 'lib/ar_enums/enum.rb', line 30

def to_s
  try_labelize(self, :desc) || try_labelize(name, :titleize)
end

#to_symObject



34
35
36
# File 'lib/ar_enums/enum.rb', line 34

def to_sym
  name.to_sym
end