干验证。如何将参数发送到宏

问题描述 投票:0回答:1

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”宏?

我已阅读所有文档,希望我遗漏了一些东西

ruby-on-rails ruby dry dry-validation
1个回答
0
投票
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)
© www.soinside.com 2019 - 2024. All rights reserved.