module KonoUtils::ApplicationEnumHelper

Racchiudo helpers per gestire gli enum

Public Instance Methods

enum_collection(model, attribute, variant=nil) click to toggle source

Genera l'hash da passare come collection alle selectbox, esegue anche la traduzione con locale

<%= f.input :usage, :as => :select,
             :collection => enum_collection(Logo, :usage), :input_html => {:include_blank => true} %>

@param [ActiveRecord] model -> ActiveRecord model contenente l'enum @param [Symbol] attribute -> Symbol che identifica l'attributo dell'enum @param [nil,String] variant -> se c'è la variante questa viene inserite _#{variant} dopo il nome del valore @return [Hash]

# File lib/kono_utils/application_enum_helper.rb, line 17
def enum_collection(model, attribute, variant=nil)

  model.send(attribute.to_s.pluralize(2).to_sym).collect {|key, val|
    [enum_translation(model, attribute, key, variant), key]
  }.to_h
end
enum_translation(model, attribute, value, variant=nil) click to toggle source

Si occupa di tradurre un determinato valore di un enum

Le traduzioni dentro al locale devono essere fatte in questo modo: it:

activerecord:
  attributes:
    estimate_before/value:
      na: NA
      very_insufficient: 1
      insufficient: 2
      sufficient: 3
      excellent: 4

dove in questo caso estimate_before è il modello e value è il nome del campo enum

@param model [ActiveRecord::Base] class contenente l'enum @param attribute [Symbol] che identifica l'attributo dell'enum @param variant [nil,String] se c'è la variante questa viene inserite _#{variant} dopo il nome del valore @return [String] @param value [Object] valore

# File lib/kono_utils/application_enum_helper.rb, line 45
def enum_translation(model, attribute, value, variant=nil)
  return '' if value.nil?
  variant = "_#{variant}" unless variant.nil?
  model.human_attribute_name("#{attribute}.#{value}#{variant}")
end