2017-11-27 9 views
0

私はAPIを開発中です。より良い開発者エクスペリエンスのために、簡単に見つかった問題をparamsに報告したいと思います。私のコードは、文字列、整数、ブール値、iso8601の日付、およびドメイン固有の値リストを検証します。文字列が有効なUUIDであるかどうかを検証する方法を探しています。私は可能なオプションを探しています。ルビー/レールでUUID文字列を検証する

+1

正規表現でuuidのフォーマットを検証できます。 https://stackoverflow.com/questions/7680771/rails-custom-validation-based-on-a-regex#7680958 –

+0

PostgreSQLアダプタには、実装をチェックしてモデルで使用できるUUIDの検証があります。 https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql/oid/uuid.rb#L6 –

+0

ありがとうございました@ NarenSisodiya、私は質問では、検証はされていないクラスの属性に直接作用するので、どのように使用できるかわかりません。さらに、私たちのレールプロジェクトはSequelを使用しています。根底にある正規表現へのヒントは役に立ちます。 – bunufi

答えて

0

正規表現マッチャーを使用して検証します。検証するUUIDのバージョンによって異なります。私は各UUIDバージョンの正規表現パターンのための十分なリソースがあると確信しています。正規表現を使用するには、流行の提案に基づいて

0

:文字列は8-4-4-4-12フォーマットに準拠し、任意のバージョンチェックを無視した場合

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 

は、このチェックのみ、ご注意ください。

+0

正規表現が[有効なUUID](https://stackoverflow.com/a/13653180/3784008)のみを探していることを確認してください。 – anothermh