Ruby/Rails で UUID 文字列を検証する

概要

APIの開発に取り組んでいます。開発者のエクスペリエンスを向上させるために、params に関する簡単に見つかる問題をユーザーに報告したいと思います。私のコードは、文字列、整数、ブール値、iso8601 日付、およびドメイン固有の値のリストを検証します。文字列が有効な UUID かどうかを検証する方法を検討しています。私はそれを行うための可能な選択肢を検討しています。

解決策

正規表現を使用するという一般的な提案に基づいて、次のようになります。

def validate_uuid_format(uuid)
  uuid_regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
  return true if uuid_regex.match?(uuid.to_s.downcase)

  log_and_raise_error("Given argument is not a valid UUID: '#{format_argument_output(uuid)}'")
end

これは文字列が 8-4-4-4-12 形式に準拠しているかどうかのみをチェックし、バージョン チェックは無視されることに注意してください。