刚刚在写一个东西的时候发现 Rails 做 update 时,如果用 update_attributes 是不能只更新一个属性,要这样必须使用 update_attribute,但 api 里面说了,update_attribute 是不会做 validate 的,请教一下还有什么办法吗?我就想只更新一些属性还要对这些值做 validate。
最简单是用 save,你别说我坏啊
#1 楼 @yggg 你这个建议我喜欢。实际可行的话最好了。
update_attributes :one_key => 'one_value' 就行了啊,update_attribute 我一直用来绕过 validates 的。
update_attributes :one_key => 'one_value'
#3 楼 @Rei 我试过不行,因为我的 model 有两个虚拟的属性 password 和 password_confirmation,这两个都有 validates 的, update_attributes :one_key => 'one_value'总会有这两个属性的 validate 错误产生。
#4 楼 @AlphaLiu 如果 password_confirmation 有可能为空,那么应该打个补丁把 secure_password 方法覆盖掉,去掉 presence 校验。
#5 楼 @Rei 哦。我要更新的不是 password,而是 email。我不想改 password 的。update_attributes 怎样都不行。
#6 楼 @AlphaLiu 那么,为什么更新 email 的时候 password 校验会通不过?
#7 楼 @Rei 这个我也正在找原因,非常奇怪啊! 是不是因为我有一个属性设成唯一的缘故呢?