使用验证助手和从控制器调用自定义验证方法有何不同?

时间:2016-10-31 16:40:10

标签: ruby-on-rails validation

Rails允许您为模型编写自定义验证方法。当您需要验证器并执行为其定义的操作时,将调用验证器。可以使用validates_with CustomValidatorvalidates :attribute, custom_validator: true等来调用这些验证器。

您还可以从关联的控制器中调用模型的类方法。使用这些助手和直接从控制器调用对象上的验证器方法有什么区别,比如Model.custom_validator(params)?

这些助手是否能保持控制器的精益,还是有更根本的原因?

1 个答案:

答案 0 :(得分:1)

  

可以使用validates_with CustomValidatorvalidates :attribute, custom_validator: true

调用这些验证程序

错误。这些是定义验证的方法,而不是调用它们。验证会自动触发。例如,在每次保存之前。

  

这些助手是否能保持控制器的精益,还是有更根本的原因?

实际上,两个都是。验证逻辑不属于控制器。它应该在模型中完成,或者,如果你是那种人,可以在form objects中完成。控制器应该关心解析params,强制执行身份验证,呈现正确的视图等。他们甚至不应该知道验证。

相关问题