具体为http://guides.rubyonrails.org/active_record_validations.html#custom-methods
我觉得这没有得到妥善回答/记录。如果你看一下示例代码 - >所有这一切都是调用errors.add根据这个http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-add 除了将错误添加到错误之外,它没有做太多其他事情。
经过测试,它确实停止了保存,但我会留在这里供人们查找。
答案 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)
),则会出错。在事务中创建多个记录的上下文中,引发错误特别有用,因为这会使您脱离事务并进入救援块(假设您允许这样做)。