module I18nRailsHelpers::ModelHelpers

Public Instance Methods

define_enum_t_methods() click to toggle source

enum attrubute_t and attributes_t return translated enum values

Example:

in the Client model
  enum gender: { undefined: 0, female: 1, male: 2 }
in use
  Client.first.gender    # => 'female'
  Client.first.gender_t  # => 'Frau'
  Client.first.genders_t # => { undefined: 'Nicht definiert', female: 'Frau', male: 'Mann' }

Requires:

locale key: activerecord.attributes.#{model_name}.#{enum}.#{enum_value_key}
eg.:        activerecord.attributes.client.genders.female                    # => 'Frau'
# File lib/i18n_rails_helpers/model_helpers.rb, line 17
def define_enum_t_methods
  defined_enums.each do |enum_attr, values|
    self.class.send(:define_method, "#{enum_attr}_t") { t_enum(enum_attr) }
    self.class.send(:define_method, "#{enum_attr.pluralize}_t") do
      t_enum_values(enum_attr, values)
    end
  end
end
t_enum(enum_attr, enum_value = nil) click to toggle source

translate enum fields value

# File lib/i18n_rails_helpers/model_helpers.rb, line 33
def t_enum(enum_attr, enum_value = nil)
  enum_value ||= public_send(enum_attr)
  I18n.t(
    "activerecord.attributes.#{model_name.i18n_key}.#{enum_attr.to_s.pluralize}.#{enum_value}"
  )
end
t_enum_values(enum_attr, values) click to toggle source
# File lib/i18n_rails_helpers/model_helpers.rb, line 26
def t_enum_values(enum_attr, values)
  values.map do |enum_val_key, _|
    [enum_val_key.to_sym, t_enum(enum_attr, enum_val_key)]
  end.to_h
end