Module: EacRailsUtils::Models::FetchErrors

Defined in:
lib/eac_rails_utils/models/fetch_errors.rb

Instance Method Summary collapse

Instance Method Details

#column?(column) ⇒ Boolean

Verifica se uma coluna existe.

Returns:

  • (Boolean)

37
38
39
# File 'lib/eac_rails_utils/models/fetch_errors.rb', line 37

def column?(column)
  respond_to?(column) && respond_to?("#{column}=")
end

#fetch_column_errors(record, record_column, self_column, options = {}) ⇒ Object


27
28
29
30
31
32
33
34
# File 'lib/eac_rails_utils/models/fetch_errors.rb', line 27

def fetch_column_errors(record, record_column, self_column, options = {})
  return if options[:skip]&.include?(record_column)

  record.errors[record_column].each do |message|
    fetch_error_column_message(self_column, message, options[:default_column],
                               "#{record.class.human_attribute_name(record_column)}: ")
  end
end

#fetch_record_errors(record, options = {}) ⇒ Object

Adiciona as mensagens de erro de record. As mensagens de uma coluna X em record serão adicionadas na coluna X em self. Se options for especificado as mensagens da coluna X de record em que X não existe em self serão adicionadas na coluna options. Um array de colunas pode ser passado em options de colunas em record que não terão suas falhas adicionadas.


12
13
14
15
16
# File 'lib/eac_rails_utils/models/fetch_errors.rb', line 12

def fetch_record_errors(record, options = {})
  record.errors.keys.each do |column|
    fetch_column_errors(record, column, column, options)
  end
end

#fetch_record_errors_by_mapping(record, mapping, options = {}) ⇒ Object

Similar a fetch_record_errors, mas torna possível especificar, através de mapping, colunas-alvo em self com nomes diferentes das colunas-fonte em record. mapping tem o formato { record_column => self_column }.


21
22
23
24
25
# File 'lib/eac_rails_utils/models/fetch_errors.rb', line 21

def fetch_record_errors_by_mapping(record, mapping, options = {})
  mapping.each do |record_column, self_column|
    fetch_column_errors(record, record_column, self_column, options)
  end
end

#save_or_raiseObject


41
42
43
44
45
# File 'lib/eac_rails_utils/models/fetch_errors.rb', line 41

def save_or_raise
  raise "Falha ao tentar salvar #{self.class.name}: #{errors_to_string}" unless save

  self
end