繁体   English   中英

为什么使用update_attributes或save时ActiveRecord会验证Model的所有列

[英]Why ActiveRecord validates all columns of Model when use update_attributes or save

我有密码验证,其长度必须大于6;

 has_secure_password
 validates :password, length: {minimum: 6}

当我保存一个对象时它会工作;

但是当我想像这样更新对象时它也可以工作:

model.update_attributes(key:value)

即使我也不想更新密码栏

这是铁轨规则之一吗?

这是预期的行为。

ActiveRecord :: Persistence# update

从传入的哈希值更新模型的属性并保存记录,所有记录都包装在事务中。 如果对象无效,则保存将失败,并且将返回false

也别名为: update_attributes

要跳过验证,可以选择使用update_attribute

更新单个属性并保存记录。 这对于现有记录上的布尔标志特别有用。 另请注意

跳过验证。

回调被调用。

如果该列可用,则updated_at / updated_on列将更新。

更新此对象中所有脏的属性。

如果属性标记为只读,则此方法引发ActiveRecord::ActiveRecordError

另请参见update_column

另一个选择是传递validate: false作为参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM