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