新手问题 怎么在 rails 的 update_attribute 时能做 validates 呢?

alphaliu · 2012年11月16日 · 最后由 AlphaLiu 回复于 2012年11月16日 · 4202 次阅读

刚刚在写一个东西的时候发现 Rails 做 update 时,如果用 update_attributes 是不能只更新一个属性,要这样必须使用 update_attribute,但 api 里面说了,update_attribute 是不会做 validate 的,请教一下还有什么办法吗?我就想只更新一些属性还要对这些值做 validate。

匿名 #1 · 2012年11月16日

最简单是用 save,你别说我坏啊

#1 楼 @yggg 你这个建议我喜欢。实际可行的话最好了。

update_attributes :one_key => 'one_value' 就行了啊,update_attribute 我一直用来绕过 validates 的。

#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 这个我也正在找原因,非常奇怪啊! 是不是因为我有一个属性设成唯一的缘故呢?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册