我正在关注DCI来构建新Rails应用程序的行为,但我对将验证放在何处有一些疑问.
传统上,如果您要使用ActiveRecord模型管理数据,则在从AR继承的特定类中定义验证,并且它们似乎适合作为数据层的一部分.
但是,在我看来,只有在特定角色下才能进行某些验证是有意义的,并且只应检查对象是否在该上下文中,在所有其他情况下都被忽略.这基本上意味着应该在特定角色定义那些验证,并且当对象在有意义的上下文中使用时,应该使用这些角色模块对对象进行扩展.
您是否认为将这些验证保留在角色中是个好主意?如果是这样,你如何声明它们而不会污染与对象相同类的其他实例?如果我想使用ActiveRecord验证,它们在类级别声明,因此我不能单独将它们附加到对象,强制在角色模块上使用"验证"实例方法的重新声明(附加直接对象的错误数组的错误,或一些类似的技术.