多/跨模型验证?

发布于 2024-12-19 07:45:13 字数 378 浏览 4 评论 0原文

因此,在我的应用程序中,我有:

  • ModelA
  • ModelB
  • ModelC
  • ModelD

在 ModelA 的控制器中,我创建了一个名为“is_verified”的自定义函数。在 is_verified 中,我在 ModelA/B/C/D 中调用多个 activerecord 搜索来提取特定的数据行,进行一些比较,如果条件通过,is_verified 返回“true”,函数传递“true”,然后输出“false”并输出一些 虽然我所做的

事情很简单并且完成了工作,但我相当确定查询多个表并执行条件以从控制器内验证我的功能不是最佳实践。

像我上面的情况一样,执行跨模型验证的最佳实践是什么。

So in my application i have:

  • ModelA
  • ModelB
  • ModelC
  • ModelD

In my controller for ModelA, i created a custom function called "is_verified". In is_verified, i call multiple activerecord searches across ModelA/B/C/D to pull specific pieces of rows of data, do some comparison and if conditionals passes, is_verified returns 'true' and the function passes and 'false' and spits out some errors to the user

while what i am doing is simple and gets the job done, i am fairly certain its not in best practice to query multiple tables and perform conditionals to validate my function from within the controller.

what is best practice to perform cross-model validations like in my situation above.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

撧情箌佬 2024-12-26 07:45:13

我会将验证转移到模型中。我还会在每个模型上创建多个与验证相关的方法并调用它们。

理想情况下,模型 A 应该具有以下内容:

def valid?
  B.valid?(self) && C.valid?(self) && D.valid?(self)
end

然后,当传递 A 的实例时,每个模型都可以查看它们是否有任何理由认为该实例不应有效。

尝试尽可能细化验证,这样更容易测试/验证。

I would move the validation to the model. I would also create multiple verification related methods on each model and just call those.

Ideally, Model A would have something like:

def valid?
  B.valid?(self) && C.valid?(self) && D.valid?(self)
end

Then each of your models, when passed an instance of A, could see if they have any reason that that instance should not be valid.

Try to split out the validation as granular as possible, that way it's easier to test/verify.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文