require 規則
require 表達條件式必填:當 when 成立時,指定 stored scalar 不得為 null 或空字串。它比只在前端切換 required 樣式可靠,因為所有寫入入口都會受同一契約約束。
Payload
{
"type": "require",
"name": "送出後必須填寫負責人",
"column": "負責人姓名",
"when": [
{ "column": "狀態", "op": "in", "value": ["已送出", "處理中", "完成"] }
]
}省略 when 代表 delete 以外的每一種寫入(create、update、revert 與 restore)都必填。column 必須是 stored scalar 或 json 欄位(link 與 computed 欄位會被拒絕);link 的存在性應由 SCP link leaf 或適合的資料模型契約處理。違反規則的寫入會回 400 Rule '<name>' violated: '<欄位>' is required。
前端整合
表單可根據同一組 predicate 即時顯示必填標記,但仍要處理伺服器否決:使用者可能在另一個分頁改變狀態,或透過非 UI 入口寫入。把規則 name 對應到欄位錯誤,並保留尚未送出的值。
when 的 operator 與上限見 when 前置條件。設定端點見 rules.set,發布前可用 rules.preview。
Last updated on