Module: KonoUtils::ApplicationEnumHelper

Defined in:
lib/kono_utils/application_enum_helper.rb

Overview

Racchiudo helpers per gestire gli enum

Instance Method Summary collapse

Instance Method Details

#enum_collection(model, attribute, variant = nil) ⇒ Hash

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} %>

Parameters:

  • model (ActiveRecord)

    -> ActiveRecord model contenente l’enum

  • attribute (Symbol)

    -> Symbol che identifica l’attributo dell’enum

  • variant (nil, String) (defaults to: nil)

    -> se c’è la variante questa viene inserite _#variant dopo il nome del valore

Returns:

  • (Hash)


17
18
19
20
21
22
# 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) ⇒ String

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

Parameters:

  • model (ActiveRecord::Base)

    class contenente l’enum

  • attribute (Symbol)

    che identifica l’attributo dell’enum

  • variant (nil, String) (defaults to: nil)

    se c’è la variante questa viene inserite _#variant dopo il nome del valore

  • value (Object)

    valore

Returns:

  • (String)


45
46
47
48
49
# 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