我有一个带有几个布尔列的表。:使用逻辑比较进行验证
PurchaseOrder需要在开票之前标记为完成(第一个布尔值)(第二个布尔值)。
我很感激一些关于如何验证这些布尔值的合法组合的指针。
我心目中什么是一样的东西,
:validates (!:complete and !:invoiced) or (:complete && :invoiced) or (:complete && !:invoiced)
这可能吗?
我有一个带有几个布尔列的表。:使用逻辑比较进行验证
PurchaseOrder需要在开票之前标记为完成(第一个布尔值)(第二个布尔值)。
我很感激一些关于如何验证这些布尔值的合法组合的指针。
我心目中什么是一样的东西,
:validates (!:complete and !:invoiced) or (:complete && :invoiced) or (:complete && !:invoiced)
这可能吗?
听起来像是你的PurchaseOrder其生命周期中要经过几个州,如一个finite-state machine。
我们在生产系统中使用的一件事是acts_as_state_machine,以帮助完成此行为。
它允许你定义:
acts_as_state_machine将允许您定义这些复杂的行为。阅读它需要一些时间来理解它,但对于这样的系统来说,它是一种拯救生命的方式。
只与您的问题相切,但我相信如果您尚未使用状态机,您会更好:http://www.shopify.com/technology/3383012-why-developers-应该是强制喂食状态机 –
感谢您的建议。我有一个实时编程的背景,所以我熟悉状态机的价值,并在我的应用程序中的其他地方使用它,但不知道这个宝石。 – Snips