Ruby on Rails - after_validation如果有效?

时间:2011-11-04 13:44:53

标签: ruby-on-rails ruby validation

现在,据我所知,即使模型未通过验证,也会调用after_validation。如果模型有效,有没有办法只调用它?我尝试在return false unless self.valid?方法中添加after_validation,但会再次触发验证并创建无限循环。

3 个答案:

答案 0 :(得分:17)

失败的验证会增加记录的错误,因此您只需检查:

return false unless self.errors.empty?

答案 1 :(得分:2)

您是否考虑过使用before_save回调?

我相信只有在对象有效时才会调用它。

答案 2 :(得分:1)

我知道这是一个老问题,但在我创建的模型上使用自定义验证时遇到了同样的错误。查看docs,其中有一个部分涉及自定义方法,并指出每次.valid?方法都会调用此类验证。这可能是在触发:after_validation回调时触发无限循环的原因。