Module: StringEnumerate::Models::ClassMethods
- Defined in:
- lib/string_enumerate/models.rb
Instance Method Summary collapse
- #enumerate(*fields) ⇒ Object
- #enumeration_key_by_index(field, index) ⇒ Object
- #enumeration_label_by_index(field, index) ⇒ Object
- #enumeration_labels(field) ⇒ Object
-
#set_enumerate_fields(fields) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Naming/AccessorMethodName.
Instance Method Details
#enumerate(*fields) ⇒ Object
10 11 12 13 |
# File 'lib/string_enumerate/models.rb', line 10 def enumerate(*fields) set_enumerate_fields fields before_validation :set_enum_fields end |
#enumeration_key_by_index(field, index) ⇒ Object
62 63 64 |
# File 'lib/string_enumerate/models.rb', line 62 def enumeration_key_by_index(field, index) enumeration_labels(field).to_a[index.to_i].first end |
#enumeration_label_by_index(field, index) ⇒ Object
66 67 68 |
# File 'lib/string_enumerate/models.rb', line 66 def enumeration_label_by_index(field, index) enumeration_labels(field).to_a[index.to_i].last end |
#enumeration_labels(field) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/string_enumerate/models.rb', line 51 def enumeration_labels(field) if (res = MODELS[name.underscore] && MODELS[name.underscore][field.to_s.pluralize]) return res end raise( "Please set list of values in config/model.yml for model '#{name.underscore}' with key '#{field.to_s.pluralize}'" ) end |
#set_enumerate_fields(fields) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Naming/AccessorMethodName
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/string_enumerate/models.rb', line 15 def set_enumerate_fields(fields) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Naming/AccessorMethodName enumerate_fields = class_variable_get(:@@enumerate_fields) rescue nil # rubocop:disable Style/RescueModifier enumerate_fields ||= {}.with_indifferent_access enumerate_fields[name.underscore] ||= {} fields.each do |field| if field.is_a?(Hash) (prefix = field[:prefix]) || (suffix = field[:suffix]) set_default = field[:set_default] field = field[:field] else prefix = nil suffix = nil set_default = nil end enumeration_labels(field).each_with_object(prepared_labels = {}) do |k| key = k.is_a?(Array) ? k.first : k prepared_labels[key] = key end enumerate_fields[name.underscore][field] = { field => prepared_labels, _prefix: prefix, _suffix: suffix } enum enumerate_fields[name.underscore][field] enumerate_fields[name.underscore][field][:set_default] = set_default end class_variable_set :@@enumerate_fields, enumerate_fields end |