rails自定义验证是否会停止保存?

时间:2015-06-09 18:31:55

标签: ruby-on-rails ruby web

具体为http://guides.rubyonrails.org/active_record_validations.html#custom-methods

我觉得这没有得到妥善回答/记录。如果你看一下示例代码 - >所有这一切都是调用errors.add根据这个http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-add 除了将错误添加到错误之外,它没有做太多其他事情。

经过测试,它确实停止了保存,但我会留在这里供人们查找。

2 个答案:

答案 0 :(得分:1)

只有在对象有效时才将对象保存到数据库中。使用'errors.add(:attribute_name,error_message)'将错误与使其无效的对象相关联,从而导致对象未被保存。

答案 1 :(得分:-1)

如果对象中的字段存在错误(我们将其称为" x"),则x.valid?为false。此有效性检查失败会阻止对象保存。如果您拨打x.save(或create(x_params)),它将返回false,如果您拨打x.save!(或create!(x_params)),则会出错。在事务中创建多个记录的上下文中,引发错误特别有用,因为这会使您脱离事务并进入救援块(假设您允许这样做)。