17

这似乎是一个愚蠢的问题,但我无法在任何地方找到答案!

是否可以update_attributes()跳过验证,例如save(validate: false)

我有一个带有一些冗长text(不是string)字段的长表单,我想为用户提供在表单上保存进度的能力。通常,在他们能够提交并继续之前,我希望答案的长度最小值等,但如果他们只是点击“保存”,我想把他们取得的任何进展放进去数据库,以便他们稍后可以回来完成。在这种情况下有没有办法跳过验证?

环顾四周,似乎我唯一能做的就是像这样单独枚举每个字段:

@obj.field1 = ...
@obj.field2 = ...
@obj.field3 = ...
...
@obj.save(:validate => false)

真的是这样吗?我会担心将来某个时候添加另一个字段而忘记在此处更新控制器。

4

1 回答 1

29
@obj.attributes = params[:obj]
@obj.save(false)

Rails 3 更新

@obj.attributes = params[:obj]
@obj.save(:validate => false)
于 2012-04-09T20:22:38.477 回答