遵循DCI设计时,在哪里进行验证?
我正在关注DCI来构建新Rails应用程序的行为,但我对将验证置于何处存在一些疑问。
传统上,如果您要使用ActiveRecord模型管理数据,则在从AR继承的特定类中定义验证,并且它们似乎适合作为数据层的一部分。
但是,在我看来,只有在特定角色下才会发生某些验证才有意义,并且只应检查该对象是否在该上下文中,而在所有其他情况下都将被忽略。 这基本上意味着这些验证应该被定义在特定的角色中,并且当这个角色模块被用于有意义的上下文时,这个角色模块应该被扩展。
你认为将这些验证保留在角色中是一个好主意吗? 如果是这样,你如何声明它们而不污染同一类的其他实例而不是对象? 如果我想使用ActiveRecord验证,它们是在类级别声明的,所以我不能将它们单独附加到对象上,被迫在角色模块上重新声明“验证”实例方法(附加直接向对象的错误数组发出错误)或一些类似的技术。
这取决于有关的验证/规则。 DCI的一个主要目标是如果规则与域模型相关联,则将系统(域模型)与系统所做的功能(功能)分离开来。 例如SSN的良好规则,那么它应该是数据对象的一部分。 另一方面,如果规则与系统的功能有关,例如,用户每周只能订购两件超级折扣产品,那么这是一个背景问题
链接地址: http://www.djcxy.com/p/64703.html上一篇: Where to put validations when following a DCI design?
下一篇: Modernizr CSS rule ignored by Safari (Mobile Safari as well)