class EnumI18nHelp::EnumAttribute
Public Class Methods
define_options_method!(klass, attr_name, attr_value)
click to toggle source
This method assume that attr_value is a symbolized hash
# File lib/enum_i18n_help/enum_i18n.rb, line 33 def define_options_method!(klass, attr_name, attr_value) attr_value_hash = attr_value.keys.map { |key| [key, key.to_s.humanize] }.to_h klass.instance_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{attr_name}_options locale_definitions = I18n.t("activerecord.attributes.#{klass.name.underscore}/#{attr_name}") #{attr_value_hash} .merge(locale_definitions.reject{ |k, v| v.nil? || #{attr_value.keys}.exclude?(k.to_sym) }) .invert .to_a end METHOD end
define_text_method!(klass, enum_key)
click to toggle source
# File lib/enum_i18n_help/enum_i18n.rb, line 22 def define_text_method!(klass, enum_key) klass.class_eval <<-METHOD, __FILE__, __LINE__ + 1 def #{enum_key}_text return if #{enum_key}.nil? I18n.t "activerecord.attributes.#{klass.name.underscore}/#{enum_key}." + #{enum_key}, default: #{enum_key}.humanize end METHOD end