多/交叉模型验证?

时间:2011-12-04 02:08:33

标签: ruby ruby-on-rails-3 model-view-controller

所以在我的申请中我有:

  • MODELA
  • ModelB
  • ModelC
  • ModelD

在我的ModelA控制器中,我创建了一个名为“is_verified”的自定义函数。在is_verified中,我调用ModelA / B / C / D中的多个activerecord搜索来提取特定的数据行,进行一些比较,如果条件传递,则is_verified返回'true'并且函数传递'false'并吐出一些对用户的错误

虽然我正在做的很简单并且完成了工作,但我相当确定它不是在最佳实践中查询多个表并执行条件来从控制器内验证我的函数。

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

1 个答案:

答案 0 :(得分:0)

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

理想情况下,模型A会有类似的东西:

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

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

尝试尽可能精确地分解验证,这样可以更容易地进行测试/验证。