module StringEnumerate::Models::ClassMethods
Public Instance Methods
enumerate(*fields)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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)
click to toggle source
# 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