module EnumRender
Constants
- VERSION
Public Instance Methods
enum(opts)
click to toggle source
Calls superclass method
# File lib/enum_render.rb, line 17 def enum(opts) super(opts) klass = self singular_model_name = klass.name.singularize.underscore locale_prefix = "enums.#{singular_model_name}" opts.each do |name, _values| liberal_enum name # To use validate detect_enum_conflict!(name, "#{name}_name") define_method("#{name}_name") do return '' if send(name).nil? begin I18n.t("#{locale_prefix}.#{name}.#{send(name)}", raise: true) rescue I18n::MissingTranslationData self[name].titleize end end detect_enum_conflict!(name, "#{name}_value") define_method("#{name}_value") do return nil if send(name).nil? klass.send(name.to_s.pluralize)[self[name]] end detect_enum_conflict!(name, "#{name}_option") define_method("#{name}_option") do return nil if send(name).nil? label = klass.new(name => self[name]).send("#{name}_name") { 'key' => self[name], 'value' => label } end detect_enum_conflict!(name, "#{name}_options", true) define_singleton_method("#{name}_options") do send(name.to_s.pluralize).map do |k, _| label = new(name => k).send("#{name}_name") key = new(name => k).send(name.to_s) { 'key' => key, 'value' => label } end end detect_enum_conflict!(name, "#{name}_select", true) define_singleton_method("#{name}_select") do send(name.to_s.pluralize).map do |k, _| label = new(name => k).send("#{name}_name") key = new(name => k).send(name.to_s) [label, key] end end end end
liberal_enum(attribute)
click to toggle source
# File lib/enum_render.rb, line 11 def liberal_enum(attribute) decorate_attribute_type(attribute) do |subtype| EnumRender::LiberalEnumType.new(attribute, defined_enums.fetch(attribute.to_s), subtype) end end