class ActiveModel::Errors

def of_kind?(attribute, type = :invalid)

person.errors.of_kind? :name, "is too long" # => false
person.errors.of_kind? :name, :not_too_long # => false
person.errors.of_kind? :name, "is too long (maximum is 25 characters)" # => true
person.errors.of_kind? :name, :too_long # => true
person.errors.of_kind? :name # => false
person.errors.of_kind? :age # => true
person.errors.add :name, :too_long, { count: 25 }
person.errors.add :age

present, or +false+ otherwise. +type+ is treated the same as for +add+.
Returns +true+ if an error on the attribute with the given type is
def of_kind?(attribute, type = :invalid)
  attribute, type = normalize_arguments(attribute, type)
  if type.is_a? Symbol
    !where(attribute, type).empty?
  else
    messages_for(attribute).include?(type)
  end
end