这似乎是一个愚蠢的问题,但我无法在任何地方找到答案!
是否可以update_attributes()
并跳过验证,例如save(validate: false)
?
我有一个很长的text
(不是string
)字段的长表单,我想让用户能够在表单上保存他们的进度。通常情况下,我需要在答案之前对答案进行最小长度等等,然后才能提交并继续进行,但在他们只是点击“保存”的情况下,我想把他们所做的任何进展放在数据库,以便他们可以回来并在以后完成。在这种情况下,有没有办法跳过验证?
从环顾四周看,我唯一可以做的就是单独枚举每个字段:
@obj.field1 = ...
@obj.field2 = ...
@obj.field3 = ...
...
@obj.save(:validate => false)
情况确实如此吗?我担心将来会在某个时候添加另一个字段而忘记在这里更新控制器。
答案 0 :(得分:28)
@obj.attributes = params[:obj]
@obj.save(false)
Rails 3的更新
@obj.attributes = params[:obj]
@obj.save(:validate => false)