class Formalism::R18nErrors::Errors
Class for errors collection
Public Class Methods
new()
click to toggle source
# File lib/formalism/r18n_errors/errors.rb, line 57 def initialize @hash = Hash.new do |hash, model| hash[model] = Hash.new do |model_hash, field| model_hash[field] = [] end end end
Public Instance Methods
add(model_key, field_key, *rest_keys, args: nil, nested_errors: nil)
click to toggle source
# File lib/formalism/r18n_errors/errors.rb, line 65 def add(model_key, field_key, *rest_keys, args: nil, nested_errors: nil) @hash[model_key][field_key].push( if nested_errors { nested_errors: nested_errors } else { rest_keys: rest_keys, translation_args: args } end ) end
translations(*prefixes)
click to toggle source
# File lib/formalism/r18n_errors/errors.rb, line 75 def translations(*prefixes) @hash.flat_map do |model_key, field_hash| field_hash.flat_map do |field_key, errors_array| errors_array.flat_map do |error| translate prefixes, model_key, field_key, error end end end end
Also aliased as: to_a
translations_hash(*prefixes)
click to toggle source
# File lib/formalism/r18n_errors/errors.rb, line 87 def translations_hash(*prefixes) prefixes.push(@hash.keys.first) if @hash.keys.first @hash.transform_values do |errors| ErrorTranslator.new(t.error, errors).translate(prefixes) end end
Private Instance Methods
translate(prefixes, model_key, field_key, error)
click to toggle source
# File lib/formalism/r18n_errors/errors.rb, line 96 def translate(prefixes, model_key, field_key, error) if (nested_errors = error[:nested_errors]) return nested_errors.translations(*prefixes, model_key) end rest_keys = error.fetch(:rest_keys) t.error .dig(*[*prefixes, model_key, field_key].compact, *rest_keys[0..-2]) .public_send(rest_keys.last, error[:translation_args]) end