ドライな検証。マクロにパラメータを送信する方法

概要

json (簡単な例):

{
  "person": {
    "birthday": "1990-10-10"
  },
  "achievement": {
    "date_appr_r": "2022-05-21"
  }
}

私の契約書:

class CreateContract < BaseContract
  json do
    required(:person).hash do
      required(:birthday).value(:date)
    end
    required(:achievement).hash do
      required(:date_appr_r).value(:date)
    end
  end

  rule(person: :birthday).validate(:person_birthday)
  rule(achievement: :date_appr_r).validate(:achievement_date_appr_r)
end

date_appr_r が生年月日より前であってはいけないことを確認する必要があります。

質問: 誕生日をachievement_date_appr_r マクロに渡すにはどうすればよいですか?

すべてのドキュメントを読みましたが、何かが欠けていることを願っています

解決策

class CreateContract < BaseContract
  params do
    required(:person).hash do
      required(:birthday).value(:date)
    end
    required(:achievement).hash do
      required(:date_appr_r).value(:date)
    end
  end

  rule(:person, :achievement) do
    key(:dates).failure(:invalid) if values[:person][:birthday] >= values[:achievement][:date_appr_r]
  end
end

そして通話契約

params = { person: { birthday: DateTime.new(2024, 1, 1) }, achievement: { date_appr_r: DateTime.new(2024, 1, 2) } }
validation = CreateContract.new.call(params)