module Shoulda::Matchers::ActiveModel::Helpers

def default_error_message(key, options = {})

default_error_message(:blank, instance: #, attribute: 'name')
default_error_message(:blank, model_name: 'user', attribute: 'name')
default_error_message(:too_long, count: 60)
default_error_message(:too_short, count: 5)
default_error_message(:blank)

instance is given.
up will delegate to ActiveModel::Errors.generate_error if a model
introduced I18n module used for localization. Use with Rails 3.0 and
Record. Works for both existing Rails 2.1 and Rails 2.2 with the newly
Helper method that determines the default error message used by Active
def default_error_message(key, options = {})
  model_name = options.delete(:model_name)
  attribute = options.delete(:attribute)
  instance = options.delete(:instance)
  if instance && instance.errors.respond_to?(:generate_message)
    instance.errors.generate_message(attribute.to_sym, key, options)
  else
    default_translation = [ :"activerecord.errors.models.#{model_name}.#{key}",
                            :"activerecord.errors.messages.#{key}",
                            :"errors.attributes.#{attribute}.#{key}",
                            :"errors.messages.#{key}" ]
    I18n.translate(:"activerecord.errors.models.#{model_name}.attributes.#{attribute}.#{key}",
      { default: default_translation }.merge(options))
  end
end

def pretty_error_messages(obj) # :nodoc:

:nodoc:
def pretty_error_messages(obj) # :nodoc:
  obj.errors.map do |attribute, model|
    msg = "#{attribute} #{model}"
    if attribute.to_sym != :base && obj.respond_to?(attribute)
      msg << " (#{obj.__send__(attribute).inspect})"
    end
    msg
  end
end