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 に答える