class ActiveModel::Errors::Tree
Constants
- ATTRIBUTE_SEPARATOR
Public Class Methods
new(base, errors)
click to toggle source
# File lib/activemodel/errors/tree.rb, line 7 def initialize(base, errors) @base = base @errors = errors end
Public Instance Methods
details()
click to toggle source
# File lib/activemodel/errors/tree.rb, line 18 def details @details ||= method_tree(:details) end
messages()
click to toggle source
# File lib/activemodel/errors/tree.rb, line 14 def messages @messages ||= method_tree(:messages) end
Private Instance Methods
method_tree(method)
click to toggle source
# File lib/activemodel/errors/tree.rb, line 24 def method_tree(method) result = ActiveSupport::HashWithIndifferentAccess.new @errors.keys.each do |original_attribute| attribute, sub_attribute = original_attribute.to_s.split(ATTRIBUTE_SEPARATOR, 2) # we really only care about the first one if sub_attribute.nil? result[attribute] = @errors.send(method)[original_attribute] else sub_base = @base.send(attribute) result[attribute] = sub_base.respond_to?(:map) ? sub_base.map { |r| r.errors.tree.send(method) } : sub_base.errors.tree.send(method) end end result end