可以跳过update_attributes上的验证吗?

Gab*_*azo 17 activerecord ruby-on-rails ruby-on-rails-3

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

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

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

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

@obj.field1 = ...
@obj.field2 = ...
@obj.field3 = ...
...
@obj.save(:validate => false)
Run Code Online (Sandbox Code Playgroud)

那是真的吗?我担心将来某个时候添加另一个字段而忘记在这里更新控制器.

fl0*_*00r 28

@obj.attributes = params[:obj]
@obj.save(false)
Run Code Online (Sandbox Code Playgroud)

Rails更新3

@obj.attributes = params[:obj]
@obj.save(:validate => false)
Run Code Online (Sandbox Code Playgroud)

  • 它应该是@ obj.save(验证:false) (25认同)
  • 这可以通过@thekindofme的某种验证来完成吗? (2认同)
  • `@obj.save(validate:false)`仅适用于Rails 3及更高版本. (2认同)