Module: EacRailsUtils::Models::FetchErrors
- Defined in:
- lib/eac_rails_utils/models/fetch_errors.rb
Instance Method Summary collapse
-
#column?(column) ⇒ Boolean
Verifica se uma coluna existe.
- #fetch_column_errors(record, record_column, self_column, options = {}) ⇒ Object
-
#fetch_record_errors(record, options = {}) ⇒ Object
Adiciona as mensagens de erro de record.
-
#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.
- #save_or_raise ⇒ Object
Instance Method Details
#column?(column) ⇒ Boolean
Verifica se uma coluna existe.
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, = {}) return if [:skip]&.include?(record_column) record.errors[record_column].each do || (self_column, , [: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, = {}) record.errors.keys.each do |column| # rubocop:disable Rails/DeprecatedActiveModelErrorsMethods, Style/HashEachMethods fetch_column_errors(record, column, column, ) 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, = {}) mapping.each do |record_column, self_column| fetch_column_errors(record, record_column, self_column, ) end end |
#save_or_raise ⇒ Object
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 |