Module: Labelizer::ClassMethods
- Defined in:
- lib/labelizer.rb
Instance Method Summary collapse
Instance Method Details
#labelize(attr, labels, converter: {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/labelizer.rb', line 11 def labelize(attr, labels, converter: {}) @labelizer_converters ||= {} @labelizer_converters[attr.to_sym] = converter define_method :"#{attr}_labelized" do self.class.labelized[attr][__send__(attr)] end labels.each do |label| define_method :"#{attr}_#{label}" do self.class.labelized[attr][__send__(attr)][label] end end end |
#labelized ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/labelizer.rb', line 25 def labelized model = model_name.i18n_key @labelized ||= Hash.new{|h,attr| converters = @labelizer_converters && @labelizer_converters[attr.to_sym] h[attr] = Hash.new{|h,value| h[value] = Hash.new{|h,label| result = ::I18n.translate( "labelizer.#{model}.#{attr}.#{value}.#{label}", default: [ :"labelizer.#{model}.#{attr}.#{label}", :"labelizer.#{model}.#{label}", :"labelizer.#{label}", "", ], ) if converter = converters && converters[label.to_sym] result = converter[result] end h[value] = result } } } end |