可以跳过update_attributes上的验证吗?

时间:2012-04-09 20:17:41

标签: ruby-on-rails ruby-on-rails-3 activerecord

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

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

我有一个很长的text(不是string)字段的长表单,我想让用户能够在表单上保存他们的进度。通常情况下,我需要在答案之前对答案进行最小长度等等,然后才能提交并继续进行,但在他们只是点击“保存”的情况下,我想把他们所做的任何进展放在数据库,以便他们可以回来并在以后完成。在这种情况下,有没有办法跳过验证?

从环顾四周看,我唯一可以做的就是单独枚举每个字段:

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

情况确实如此吗?我担心将来会在某个时候添加另一个字段而忘记在这里更新控制器。

1 个答案:

答案 0 :(得分:28)

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

Rails 3的更新

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