Open1

[Ruby]dry-validation備忘録

がっこさんがっこさん

https://dry-rb.org/gems/dry-validation/1.6/

リクエストパラメータを入力チェックする際は、以下のように記述する。

FormContract.new.call(params.permit!.to_h)

パラメータチェック

  • required: 必須
  • optional: 任意

値チェック

  • filled: 必須 + 存在チェック + 型変換
    型チェックなしにする場合は、型指定をしなければ型チェックされない。
    # 型チェックあり
    required(:end_date).filled(:date)
    
    # 型チェックなし
    required(:end_date).filled()
    
  • value:必須+存在チェック+型一致
  • maybe:型一致(nilの場合はチェックしない)
    ※string = blankの場合はチェックされる。
  • array:オブジェクト配列チェック(配列サイズが0の場合はチェックされない)
    多重配列の場合は次のようにネストさせることでチェックできる。
    optional(:groups).array(:hash) do
        required(:id).filled(:integer)
        required(:name).filled(:string)
        optional(:children).array(:hash) do
          required(:id).filled(:integer)
          optional(:name).value(:string)
        end
      end
    
  • each:配列チェック
    # names: [1, 2, 3]などの場合
    required(:names).filled { each(:integer) }