gpt4 book ai didi

ruby-on-rails - 遵循 DCI 设计时在哪里进行验证?

转载 作者:数据小太阳 更新时间:2023-10-29 07:00:17 25 4
gpt4 key购买 nike

我正在按照 DCI 构建新 Rails 应用程序的行为,但我对将验证放在哪里有一些疑问。

传统上,如果您要使用 ActiveRecord 模型管理您的数据,验证是在继承自 AR 的特定类中定义的,并且它们似乎适合作为数据层的一部分。

然而,在我看来,只在特定角色下进行某些验证是有意义的,并且只有当对象在该上下文中时才应检查它们,在所有其他情况下都将被忽略。这基本上意味着这些验证应该在特定角色上定义,并且当对象在有意义的上下文中使用时,应该使用这些角色模块扩展对象。

您认为将这些验证保留在角色上是个好主意吗?如果是这样,您如何声明它们而不污染与对象相同的类的其他实例?如果我想使用 ActiveRecord 验证,它们是在类级别声明的,所以我不能将它们单独附加到对象,被迫在角色模块上使用“验证”实例方法的重新声明(附加直接将错误添加到对象的错误数组中),或一些类似的技术。

最佳答案

这取决于相关的验证/规则。DCI 的一个主要目标是在规则与领域模型相关联的情况下将系统是什么(领域模型)与系统做什么(功能)分开。例如。 SSN 的福利规则那么它应该是数据对象的一部分。另一方面,如果规则与系统的功能相关,例如一个用户每周只能订购两件 super 折扣的产品,那就看上下文了

关于ruby-on-rails - 遵循 DCI 设计时在哪里进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com