Sha256: 112f3e3ba53a3a4a10a532840ecae7fba10d94639dca7d3d1e42e57ffdaa0eb0
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
# frozen_string_literal: true module AdequateJson class Error < Base builder do |json, model, error, message, includes| json.error do json.code error json.message message if model json.details do includes_to_errors(model, includes, model.errors.messages.dup).each do |model_name, errors| json.set! model_name, errors end end end end end def initialize(model, error = nil, message = nil, includes = nil) super(model) @error = error @message = message @includes = includes end def includes_to_errors(model, includes, attributes = {}) unless model.nil? each_inclusion(includes) do |child, value| submodel = model.send(child) subattributes = attributes[submodel.model_name.to_s.underscore] = submodel.errors.messages.dup includes_to_errors(submodel, value, subattributes) end end attributes end def each_inclusion(includes, &) unless includes.respond_to?(:keys) includes = [includes].flatten.compact.inject({}) do |hash, key| hash.tap do hash[key] = nil end end end includes.each(&) end def yield_builder(builder) Jbuilder.new do |json| instance_exec json, @model, @error, @message, @includes, &builder end end class << self def for(error, model = nil, includes = nil) new(model, error, I18n.t(error, scope: AdequateJson.configuration.i18n_errors_scope), includes) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
adequate_json-0.2.0 | lib/adequate_json/error.rb |
adequate_json-0.1.0 | lib/adequate_json/error.rb |