module ActsEnumTranslable::ActiveModel::Concern::ClassMethods
Public Instance Methods
acts_enum_translable(options = {})
click to toggle source
Pega o nome da class corrente, verifica se tem enums e cria os metodos em tempo de execucao
Returns:¶ ↑
@return [Method] method_translable
# File lib/acts_enum_translable/active_model/concern.rb, line 15 def acts_enum_translable(options = {}) cattr_accessor :class_name klass = (options[:class_name] || self) add_runtime_methods(klass) if klass.defined_enums? end
Private Instance Methods
add_runtime_methods(klass)
click to toggle source
Cria metodos em tempo de execucao com sufixo _translable
Parameters:¶ ↑
@param klass [Array] recebe um array com os enums definidos em uma class/model
Returns:¶ ↑
@return [Method] retorna methods com sufixo _translable baseados nas keys dos enums
# File lib/acts_enum_translable/active_model/concern.rb, line 30 def add_runtime_methods(klass) klass.defined_enums.keys.each do |enum_key| define_method :"#{enum_key}_translable" do trans_key = self.class.i18n_key(enum_key, send(enum_key)) return I18n.t(trans_key, locale: I18n.locale) if I18n.exists? trans_key return send(enum_key).humanize end end end