Module: ActiveEnum::ActsAsEnum::ClassMethods

Defined in:
lib/active_enum/acts_as_enum.rb

Instance Method Summary collapse

Instance Method Details

#[](index) ⇒ Object



35
36
37
# File 'lib/active_enum/acts_as_enum.rb', line 35

def [](index)
  get(index)
end

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



39
40
41
42
43
# File 'lib/active_enum/acts_as_enum.rb', line 39

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



23
24
25
# File 'lib/active_enum/acts_as_enum.rb', line 23

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

#include?(value) ⇒ Boolean

Enables use as a delimiter in inclusion validation

Returns:

  • (Boolean)


53
54
55
56
57
# File 'lib/active_enum/acts_as_enum.rb', line 53

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.



46
47
48
49
50
# File 'lib/active_enum/acts_as_enum.rb', line 46

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



27
28
29
# File 'lib/active_enum/acts_as_enum.rb', line 27

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

#to_selectObject



31
32
33
# File 'lib/active_enum/acts_as_enum.rb', line 31

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

#valuesObject



19
20
21
# File 'lib/active_enum/acts_as_enum.rb', line 19

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