Module: ActiveEnum::ActsAsEnum::ClassMethods
- Defined in:
- lib/active_enum/acts_as_enum.rb
Instance Method Summary collapse
- #[](index) ⇒ Object
- #enum_values ⇒ Object
- #get(index, raise_on_not_found: ActiveEnum.raise_on_not_found) ⇒ Object
- #ids ⇒ Object
-
#include?(value) ⇒ Boolean
Enables use as a delimiter in inclusion validation.
-
#meta(index, raise_on_not_found: ActiveEnum.raise_on_not_found) ⇒ Object
Access any meta data defined for a given id or name.
- #names ⇒ Object
- #to_select ⇒ Object
- #values ⇒ Object
Instance Method Details
#[](index) ⇒ Object
37 38 39 |
# File 'lib/active_enum/acts_as_enum.rb', line 37 def [](index) get(index) end |
#enum_values ⇒ Object
15 16 17 18 19 |
# File 'lib/active_enum/acts_as_enum.rb', line 15 def enum_values select(Arel.sql("#{primary_key}, #{[:name_column]}")) .where([:conditions]) .order(Arel.sql("#{primary_key} #{[: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([:name_column]) : row.id end |
#ids ⇒ Object
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
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 (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, [:name_column].to_s) end |
#names ⇒ Object
29 30 31 |
# File 'lib/active_enum/acts_as_enum.rb', line 29 def names enum_values.map { |v| v.send([:name_column]) } end |
#to_select ⇒ Object
33 34 35 |
# File 'lib/active_enum/acts_as_enum.rb', line 33 def to_select enum_values.map { |v| [v.send([:name_column]), v.id] } end |
#values ⇒ Object
21 22 23 |
# File 'lib/active_enum/acts_as_enum.rb', line 21 def values enum_values.map { |v| [ v.id, v.send([:name_column]) ] } end |