Module: ActiveEnum::ActsAsEnum::ClassMethods

Defined in:
lib/active_enum/acts_as_enum.rb

Instance Method Summary collapse

Instance Method Details

#[](index) ⇒ Object



37
38
39
# File 'lib/active_enum/acts_as_enum.rb', line 37

def [](index)
  get(index)
end

#enum_valuesObject



15
16
17
18
19
# File 'lib/active_enum/acts_as_enum.rb', line 15

def enum_values
  select(Arel.sql("#{primary_key}, #{active_enum_options[:name_column]}"))
    .where(active_enum_options[:conditions])
    .order(Arel.sql("#{primary_key} #{active_enum_options[:order]}"))
end

#get(index, raise_on_not_found: ActiveEnum.raise_on_not_found) ⇒ Object



41
42
43
44
45
# File 'lib/active_enum/acts_as_enum.rb', line 41

def get(index, raise_on_not_found: ActiveEnum.raise_on_not_found)
  row = get_value(index, raise_on_not_found)
  return if row.nil?
  index.is_a?(Integer) ? row.send(active_enum_options[:name_column]) : row.id
end

#idsObject



25
26
27
# File 'lib/active_enum/acts_as_enum.rb', line 25

def ids
  enum_values.map { |v| v.id }
end

#include?(value) ⇒ Boolean

Enables use as a delimiter in inclusion validation

Returns:

  • (Boolean)


55
56
57
58
59
# File 'lib/active_enum/acts_as_enum.rb', line 55

def include?(value)
  return super if value.is_a?(Module)

  !self[value].nil?
end

#meta(index, raise_on_not_found: ActiveEnum.raise_on_not_found) ⇒ Object

Access any meta data defined for a given id or name. Returns a hash.



48
49
50
51
52
# File 'lib/active_enum/acts_as_enum.rb', line 48

def meta(index, raise_on_not_found: ActiveEnum.raise_on_not_found)
  row = lookup_relation(index).unscope(:select).first
  raise(ActiveEnum::NotFound, "#{self} value for '#{index}' was not found") if raise_on_not_found
  row&.attributes.except(primary_key.to_s, active_enum_options[:name_column].to_s)
end

#namesObject



29
30
31
# File 'lib/active_enum/acts_as_enum.rb', line 29

def names
  enum_values.map { |v| v.send(active_enum_options[:name_column]) }
end

#to_selectObject



33
34
35
# File 'lib/active_enum/acts_as_enum.rb', line 33

def to_select
  enum_values.map { |v| [v.send(active_enum_options[:name_column]), v.id] }
end

#valuesObject



21
22
23
# File 'lib/active_enum/acts_as_enum.rb', line 21

def values
  enum_values.map { |v| [ v.id, v.send(active_enum_options[:name_column]) ] }
end