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)