module ActiveModel::ErrorsDetails
Constants
- MESSAGE_OPTIONS
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/active_model/errors_details.rb, line 70 def self.included(base) base.class_eval do alias_method :initialize_without_details, :initialize alias_method :initialize, :initialize_with_details alias_method :initialize_dup_without_details, :initialize_dup alias_method :initialize_dup, :initialize_dup_with_details alias_method :delete_without_details, :delete alias_method :delete, :delete_with_details alias_method :clear_without_details, :clear alias_method :clear, :clear_with_details alias_method :add_without_details, :add alias_method :add, :add_with_details end end
Public Instance Methods
add_with_details(attribute, message = :invalid, options = {})
click to toggle source
# File lib/active_model/errors_details.rb, line 113 def add_with_details(attribute, message = :invalid, options = {}) message = message.call if message.respond_to?(:call) error = {error: message}.merge(options.except(*::ActiveModel::Errors::CALLBACKS_OPTIONS + MESSAGE_OPTIONS)) details[attribute.to_sym] << error add_without_details(attribute, message, options) end
clear_with_details()
click to toggle source
# File lib/active_model/errors_details.rb, line 108 def clear_with_details details.clear clear_without_details end
delete_with_details(key)
click to toggle source
# File lib/active_model/errors_details.rb, line 103 def delete_with_details(key) details.delete(key) delete_without_details(key) end
details()
click to toggle source
# File lib/active_model/errors_details.rb, line 94 def details @details end
initialize_dup_with_details(other)
click to toggle source
# File lib/active_model/errors_details.rb, line 89 def initialize_dup_with_details(other) @details = other.details.deep_dup initialize_dup_without_details(other) end
initialize_with_details(base)
click to toggle source
# File lib/active_model/errors_details.rb, line 98 def initialize_with_details(base) @details = Hash.new { |details, attribute| details[attribute] = [] } initialize_without_details(base) end
marshal_dump()
click to toggle source
# File lib/active_model/errors_details.rb, line 121 def marshal_dump [@base, without_default_proc(@messages), without_default_proc(@details)] end
marshal_load(array)
click to toggle source
# File lib/active_model/errors_details.rb, line 125 def marshal_load(array) @base, @messages, @details = array apply_default_array(@messages) apply_default_array(@details) end
Private Instance Methods
apply_default_array(hash)
click to toggle source
# File lib/active_model/errors_details.rb, line 139 def apply_default_array(hash) hash.default_proc = proc { |h, key| h[key] = [] } hash end
without_default_proc(hash)
click to toggle source
# File lib/active_model/errors_details.rb, line 133 def without_default_proc(hash) hash.dup.tap do |new_h| new_h.default_proc = nil end end