module ActiveModel::BetterErrors::Emulation
Emulation
The ActiveModel
Emulation
Layer
Constants
- MESSAGE_REPORTER_METHODS
- MODEL_METHODS
Public Class Methods
included(base)
click to toggle source
# File lib/active_model/better_errors/emulation.rb, line 27 def self.included(base) base.class_eval do extend Forwardable def_delegators :error_collection, *MODEL_METHODS def_delegators :message_reporter, *MESSAGE_REPORTER_METHODS def_delegators :hash_reporter, :to_hash def_delegators :array_reporter, :to_a alias_method :blank?, :empty? alias_method :has_key?, :include? end end
Public Instance Methods
add(attribute, message = nil, options = {})
click to toggle source
# File lib/active_model/better_errors/emulation.rb, line 55 def add(attribute, message = nil, options = {}) if options[:strict] error = ErrorMessage.build(attribute, message, options) message = ::ActiveModel::BetterErrors.format_message(@base, error) full_message = full_message(attribute, message) fail ActiveModel::StrictValidationFailed, full_message end error_collection.add attribute, message, options end
add_on_blank(attributes, options = {})
click to toggle source
# File lib/active_model/better_errors/emulation.rb, line 48 def add_on_blank(attributes, options = {}) [attributes].flatten.each do |attribute| value = @base.send(:read_attribute_for_validation, attribute) add(attribute, :blank, options) if value.blank? end end
add_on_empty(attributes, options = {})
click to toggle source
# File lib/active_model/better_errors/emulation.rb, line 40 def add_on_empty(attributes, options = {}) [attributes].flatten.each do |attribute| value = @base.send(:read_attribute_for_validation, attribute) is_empty = value.respond_to?(:empty?) ? value.empty? : false add(attribute, :empty, options) if value.nil? || is_empty end end
as_json(options = nil)
click to toggle source
# File lib/active_model/better_errors/emulation.rb, line 69 def as_json(options = nil) to_hash end
to_xml(options = {})
click to toggle source
# File lib/active_model/better_errors/emulation.rb, line 65 def to_xml(options = {}) to_a.to_xml options.reverse_merge(root: 'errors', skip_types: true) end