Sha256: 55014855fbc4d52c0d81da960a28565519f352d51ba4b8fc92b61e8ad219c790
Contents?: true
Size: 1.22 KB
Versions: 3
Compression:
Stored size: 1.22 KB
Contents
require "reform" require "reform_errors_objects/version" module ReformErrorsObjects JsonErrorsCollector = ->(form) do result = {} # skip non-form objects return result unless form.is_a?(Reform::Form) return result unless form.errors.messages.any? # get properties errors result.merge!(form.instance_variable_get(:@result).errors || {}) form.schema.each_pair do |property, definition| options = definition.instance_variable_get(:@options) if options[:collection] && form.send(property) # ? collection nested_errors = form.send(property).each.with_index.inject({}) do |memo, (obj, index)| nested_errors = JsonErrorsCollector.call(obj) memo[index.to_s.to_sym] = nested_errors if nested_errors.any? memo end result[property.to_sym] = nested_errors if nested_errors.any? elsif options[:nested] && form.send(property) # ? nested nested_errors = JsonErrorsCollector.call(form.send(property)) result[property.to_sym] = nested_errors if nested_errors.any? end end result end def objects @objects ||= JsonErrorsCollector.call(@form) end end Reform::Contract::Result::Errors.include(ReformErrorsObjects)
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
reform_errors_objects-0.1.3 | lib/reform_errors_objects.rb |
reform_errors_objects-0.1.2 | lib/reform_errors_objects.rb |
reform_errors_objects-0.1.1 | lib/reform_errors_objects.rb |