现在,据我所知,即使模型验证失败,after_validation也会被调用。有没有一种方法可以只在模型有效的情况下调用它?我尝试在after_validation方法中添加return false unless self.valid?,但这会再次触发验证,并创建一个无限循环。
after_validation
return false unless self.valid?
2uluyalo1#
失败的验证会增加记录的错误,因此您可以检查:
return false unless self.errors.empty?
ds97pgxw2#
你有没有考虑过使用before_save回调函数?我相信只有在对象有效的情况下才会调用。
before_save
jtw3ybtb3#
我知道这是一个老问题,但当我在我创建的模型上使用自定义验证时,我遇到了同样的错误。查看文档,有一部分涉及自定义方法,它指出每次.valid?方法时都会调用此类验证。这可能就是当:after_validation回调被触发时,无限循环被触发的原因。
.valid?
:after_validation
3条答案
按热度按时间2uluyalo1#
失败的验证会增加记录的错误,因此您可以检查:
ds97pgxw2#
你有没有考虑过使用
before_save
回调函数?我相信只有在对象有效的情况下才会调用。
jtw3ybtb3#
我知道这是一个老问题,但当我在我创建的模型上使用自定义验证时,我遇到了同样的错误。查看文档,有一部分涉及自定义方法,它指出每次
.valid?
方法时都会调用此类验证。这可能就是当:after_validation
回调被触发时,无限循环被触发的原因。