class DataMapper::Validations::ValidationErrors
@author Guy van den Berg @since 0.9
Attributes
resource[R]
Public Class Methods
default_error_message(key, field, *values)
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 40 def self.default_error_message(key, field, *values) field = DataMapper::Inflector.humanize(field) @@default_error_messages[key] % [field, *values].flatten end
default_error_messages=(default_error_messages)
click to toggle source
Holds a hash with all the default error messages that can be replaced by your own copy or localizations.
# File lib/dm-validations/validation_errors.rb, line 36 def self.default_error_messages=(default_error_messages) @@default_error_messages = default_error_messages end
new(resource)
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 47 def initialize(resource) @resource = resource @errors = DataMapper::Validations::OrderedHash.new { |h,k| h[k] = [] } end
Public Instance Methods
[](property_name)
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 123 def [](property_name) if (property_errors = errors[property_name.to_sym]) property_errors end end
add(field_name, message)
click to toggle source
Add a validation error. Use the field_name :general if the errors does not apply to a specific field of the Resource.
@param [Symbol] field_name
The name of the field that caused the error
@param [String] message
The message to add
# File lib/dm-validations/validation_errors.rb, line 65 def add(field_name, message) # see 6abe8fff in extlib, but don't enforce # it unless Edge version is installed if message.respond_to?(:try_call) # DM resource message = if (resource.respond_to?(:model) && resource.model.respond_to?(:properties)) message.try_call( resource, resource.model.properties[field_name] ) else # pure Ruby object message.try_call(resource) end end (errors[field_name] ||= []) << message end
clear!()
click to toggle source
Clear existing validation errors.
# File lib/dm-validations/validation_errors.rb, line 53 def clear! errors.clear end
each() { |v| ... }
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 105 def each errors.each_value do |v| yield(v) unless DataMapper::Ext.blank?(v) end end
empty?()
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 111 def empty? @errors.all? { |property_name, errors| errors.empty? } end
full_messages()
click to toggle source
Collect all errors into a single list.
# File lib/dm-validations/validation_errors.rb, line 86 def full_messages errors.inject([]) do |list, pair| list += pair.last end end
method_missing(meth, *args, &block)
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 115 def method_missing(meth, *args, &block) errors.send(meth, *args, &block) end
on(field_name)
click to toggle source
Return validation errors for a particular field_name.
@param [Symbol] field_name
The name of the field you want an error for.
@return [Array<DataMapper::Validations::Error>]
Array of validation errors or empty array, if there are no errors on given field
# File lib/dm-validations/validation_errors.rb, line 100 def on(field_name) errors_for_field = errors[field_name] DataMapper::Ext.blank?(errors_for_field) ? nil : errors_for_field.uniq end
respond_to?(method)
click to toggle source
Calls superclass method
# File lib/dm-validations/validation_errors.rb, line 119 def respond_to?(method) super || errors.respond_to?(method) end
Private Instance Methods
errors()
click to toggle source
# File lib/dm-validations/validation_errors.rb, line 131 def errors @errors end