我有一个包含几个布尔列的表。
在开票之前,需要将PurchaseOrder标记为完成(第一个布尔值)(第二个布尔值)。
我非常感谢如何验证这些布尔值的合法组合。
我的想法是,
:validates (!:complete and !:invoiced) or (:complete && :invoiced) or (:complete && !:invoiced)
这可能吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
听起来你的PurchaseOrder在其生命周期中经历了几个状态,如finite-state machine。
我们在生产系统中使用的一件事是acts_as_state_machine,以帮助实现此行为。
它允许您定义:
acts_as_state_machine将允许您定义这些复杂的行为。阅读它需要一些时间来理解它,但对于像这样的系统,它一直是一个救命。