我正在遵循DCI来构造一个新的Rails应用程序的行为,但是我对将验证放在哪里有一些疑问。
传统上,如果您要使用ActiveRecord模型管理数据,则验证是在从AR继承的特定类中定义的,它们似乎正好适合作为数据层的一部分。
然而,在我看来,只在特定角色下发生的某些验证是有意义的,并且只有当对象在该上下文中时才应该检查它们,而在所有其他情况下都会被忽略。这基本上意味着这些验证应该在特定的角色上定义,并且当对象在有意义的上下文中使用时,应该使用这些角色模块来扩展对象。
您认为将这些验证保留在角色中是个好主意吗?如果是这样,如何在不污染与对象相同的类的其他实例的情况下声明它们?如果我想使用验证验证,它们是在类级别声明的,所以我不能将它们单独附加到对象上,被迫在角色模块上使用“ActiveRecord”实例方法的重新声明(直接将错误附加到对象的errors数组),或者一些类似的技术。
发布于 2012-10-23 18:47:48
这取决于所讨论的验证/规则。例如,SSN的格式规则,那么它应该是数据对象的一部分。
https://stackoverflow.com/questions/12875921
复制相似问题